ECMAScript规范中使用IEEE754格式来表示整数和浮点数。支持十进制、八进制以及十六进制。有一点注意的是八进制数字在严格模式下是无效的,这可能会影响到程序的正常运行。
避免浮点数等值判断:
众所周知,基于IEEE754进行数据计算会产生舍入误差,最为经典的例子:
0.1+0.2 = 0.30000000000000004 ; 0.15+0.15 = 0.3;
在实际开发中应尽量避免使用浮点数的等值判断。
NaN:
关于NaN有两点特别关键,NaN和任何数的操作的返回值都是NaN;NaN和任何量都不相等,包括NaN本身。检测一个变量是否是NaN,只有isNaN()可以。
数字转换:
Javascript提供了把非数字转换为数字的方法:Number(),parseFloat(),parseInt()函数。其中,Number()方法接受object对象,paraseInt()和parseFloat()接受string对象。具体转换规则:
- Boolean类型,true-1,false-0;
- Number类型,不做处理。
- null,返回0
- undefined ,返回NaN
- String类型:1、纯数字组成(符号不算),包括整数、浮点数、十六进制数字转为为十进制数字量;2、空字符串,返回0;3、不属于1和2,返回NaN。
- Object,先调用valueOf()方法,按以上规则转换,如返回NaN,再调用toString()方法,按以上方式返回。