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次方。