第5节 Number类型

  学习JavaScript也有一个星期之久了,每天下班回来看视频、看书、记笔记、动手实践。虽然学的慢,但是也一直在进步。相信以后回首自己学习的一点一滴,又是另外一番心情,每一步都是坚实的脚印。继续记录JavaScript数据类型的笔记吧,Number类型。

Number类型

  最基本的数值字面量格式是十进制整数,除十进制整数还可以通过八进制或十六进制的字面值表示。
  八进制字面值第1位必须是0,然而是八进制数字序列(0~7),如果字面值超过范围,那么前导将被忽略,后面的数值被当作十进制数值解析。

    //八进制
    var num1 = 050;
    var num2 = 078;
    document.write(num1 + "<br>");  //返回 40

    //078中的8超出了八进制的范围,所以前导被省略,解析为十进制
    document.write(num2 + "<br>");  //返回 78

  十六进制字面值前两位必须是0x,后面跟任何十六进制数字(0~9及A~F)。

    //十六进制
    var num3 = 0xA0;
    document.write(num3 + "<br>");  //返回 160

浮点型

  浮点数值必须包含一个小数点,并且小数点后面必须至少有一位数字。如果浮点数值本身表示的就是一个整数(1.0),那么该值会被转换为整数。

    //浮点型
    var float1 = 1.1;
    var float2 = 1.0;
    document.write(float1 + "<br>");    //返回 1.1
    document.write(float2 + "<br>");    //返回 1,被转为整型

  对于一些极大或极小的数可以用科学计数法e表示:

    var float3 = 1.24e3;
    var float4 = 1.24e-3;
    document.write(float3 + "<br>");    //返回 1240
    document.write(float4 + "<br>");    //返回 0.0024

  浮点数值计算会产生舍入误差,所以不要进行如下测试:

    var float5 = 0.1;
    var float6 = 0.2;
    document.write(float5 + float6 == 0.3); //返回 false

数值范围

属性 表示的值
Number.MIN_VALUE ECMAScript能够表示的最小值
Number.MAX_VALUE ECMAScript能够表示的最大值
Infinity 正无穷
-Infinity 负无穷

NaN

  非数值(Not a Number)是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。
  任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等,包括NaN本身。

    var num4 = NaN*0;
    document.write(num4 + "<br>");  //返回 NaN
    document.write(NaN == NaN); //返回 false

  isNaN()能确定参数是否“不是数值”

    document.write(isNaN('wuhen') + "<br>") //返回true
    document.write(isNaN(NaN) + "<br>")     //返回true
    document.write(isNaN(100) + "<br>")     //返回false

数值转换

  有3个函数可以把非数值转换为数值,Number(),parseInt(),parseFloat()。Number()可以用于任何数据类型,而另外两个函数则专门用于把字符串转换成数值。

Number()函数的转换规则:

  • 如果是Boolean值,true和false分别转换成1和0
  • 如果是数值,只是简单的传入和返回
  • 如果是null,返回0
  • 如果是undefined,返回NaN
  • 如果是空字符串,返回0
    //Number()
    document.write(Number(true) + "<br>")       //返回 1
    document.write(Number(100) + "<br>")        //返回 100
    document.write(Number(null) + "<br>")       //返回 0
    document.write(Number(undefined) + "<br>")  //返回 NaN
    document.write(Number('') + "<br>")         //返回 0

parseInt()函数的转换规则:

  • 会忽略字符串前面的空格,直到找到第一个非空格字符
  • 如果第一个字符不是数字字符或者负号,会返回NaN
  • 转换空字符串会返回NaN
  • 可提供第2个参数,用来指定转换的进制
    //parseInt()
    document.write(parseInt(' 123dfs') + "<br>")    //返回 123
    document.write(parseInt('asdf123') + "<br>")    //返回 NaN
    document.write(parseInt('') + "<br>")           //返回 NaN

    //指定进制参数
    document.write(parseInt('10',2) + "<br>")       //返回 2
    document.write(parseInt('10',8) + "<br>")       //返回 8
    document.write(parseInt('10',10) + "<br>")      //返回 10
    document.write(parseInt('10',16) + "<br>")      //返回 16

parseFloat()函数的转换规则:

  • 从第一个字符开始解析每个字符,遇见一个无效的浮点数字字符为止
  • 字符串中第一个小数点是有效的,而第二个小数点就是无效的
  • 只能解析十进制,所以没有像parseInt()有2个参数的用法
    //parseFloat()
    document.write(parseFloat('123.11sf') + "<br>")     //返回 123.11
    document.write(parseFloat('123.11.34sf') + "<br>") //返回 123.11

学习总结

  学习完Number类型,可谓对JavaScript的数字操作更加熟悉了,也学习到了3个转换函数Number()、parseInt()、parseFloat()。以前只知道一个parseInt()可以转换数字,没想到还有这么多功能,这么多转换规则。知道了这些,以后操作数字起来就会方便许多。


猜你喜欢

转载自blog.csdn.net/kelinfeng16/article/details/81605483