首页 > 代码库 > JavaScript04

JavaScript04

var floatnum = 3.1416e7;//等价于31416000

这里需要注意一点:永远不要用特定的浮点数值进行boolean判断。

var a=0.1,b=0.2;

a+b==0.3;//false

实际上a+b=0.30000000000000004;//浮点数最高经度是17位小数

因此,如果你的程序里写了诸如此类的判断条件 if(a+b==0.3){//dosomething()}  你极有可能得不到你想要的逻辑。

NaN——非数值(not a number)

  1. 任何涉及NaN的操作都会返回NaN,这个特点在多步计算中可能导致问题。
  2. NaN与任何值都不相等,包括NaN本身。为此ECMAScript定义了isNaN()函数。alert(isNaN(NaN));//true    alert(isNaN(“aa”));//true   alert(isNaN(10));//false   alert(isNaN(“10”));//false   alert(isNaN(true));//false 因为true能被转换为数值1
  3. 尽管有点儿不可思议,但是isNaN()确实也适用于对象。在基于对象调用isNaN()函数的时候,首先会调用对象的valueof()方法,然后确定该方法返回的值是否可以转换为数值。如果不能,则基于这个返回值调用toString()方法,在测试返回值。

有3个函数能将非数值转换为数值:Number(),parseInt(),parseFloat()

第一个Number()可以用于任何数据类型。后两个只适用于将字符串转换为数值。

Number()的转换规则是:

  1. 若是Boolean值,则true和false分别为1和0
  2. null转换为0
  3. undefined转换为NaN
  4. 字符串:字符串是空的将被转换为0,字符串包含其他无法转换的字符,将被转换为NaN
  5. 对象,将调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后继续根据前面的规则进行转换返回的字符串值。

JavaScript04