JavaScript Number类型均采用64位浮点数,因此实际上是没有整数的概念的,涉及到小数的部分比较都要小心。
0.1+0.2===0.3
//false
遵从IEEE754标准,参见Wiki。
64位浮点数采用:
- 1位符号位sign
- 11位阶码e
- 52位有效数字b51....b0
具体表达式表示为:
Wiki
因此,可以当整数的有效数字在绝对值小于2的53次方的整数都可以被精确表示,请注意:这并不代表双精度浮点数可表示的最大范围。
我们可以根据其表达式推算出:
16进制下:
7ff0 0000 0000 0000 = Infinity
fff0 0000 0000 0000 = −Infinity
根据查阅(直接输入Math.MAX_VALUE),Infinity值近似等于1.7976931348623157 × 10的308次方。