Number
在JS中所有的数值都是
Number
类型包括整数和浮点数(小数)
JS中可以表示的数字最大值
Number.MAX_VALUE
,(最小值Number.MIN_VALUE
)
如果使用
Number
表示的数字超过了最大值,则会返回一个Infinity
,标识正无穷
Infinity
是一个字面量
typeof Infinity
也会返回number
NaN
是一个特殊的数字,表示Not A Number
typeof NaN
也会返回number
NOTE
在JS中整数的运算基本可以保证精确
WARNING
如果使用JS进行浮点数运算,可能得到一个不精确的结果
CAUTION
0.1+0.2 = 0.30000000000000004
这不是 JavaScript 独有的现象,而是使用二进制浮点运算的程式语言都会遇到的问题。而 JavaScript 中用到小数点时,因为 JavaScript 是采用 IEEE 754 六十四位元双精度浮点数,所以会遇到这个问题。
在一般生活中,我们多数情况是使用十进位,而要能够精确表达十进位,而 10 的质因数是 5 与 2,所以只有 1/2、1/4、1/5、1/8、1 /10 这几个数能够被十进位的小数清楚表达;而像是 1/3、1/6、1/7、1/9 则不行。以 1/3 来说,我们知道会是 0.33333333 一路到无穷无尽。
而对于二进位制来说,只有 1/2、1/4、1/8 等可以被清楚表达,其他则会无穷无尽地延伸下去,然而因为电脑的记忆体有限,程式语言会分配给一个数字的记忆体也是有限,所以在精准度的表达下会有其限制,这也是导致 0.30000000000000004 这个怪异数字的原因。