基礎知識
js內(nèi)部所有數(shù)字在計算機內(nèi)存中的表示都是64位雙精度浮點數(shù)
雙精度浮點數(shù)表示法的副作用
使用二進制浮點數(shù)(使用IEEE 754的所有語言)的最著名副作用是:
0.1 + 0.2 === 0.3; // false
js最大安全整數(shù)的概念
Number.MAX_SAFE_INTEGER // 9007199254740991
這個數(shù)字形成的原因是从橘,Javascript 使用 IEEE 754 中規(guī)定的雙精度浮點數(shù)仁烹。所謂安全是指在這個范圍內(nèi)的整數(shù)瑰步,js可以精確地進行表示并精確地進行比較運算闽烙,否則就會輸出錯誤的值。
國際標準 IEEE 754 規(guī)定,有效數(shù)字第一位默認總是1叠纹,不保存在64位浮點數(shù)之中玉控。也就是說,有效數(shù)字總是1.xxxx的形式座每,其中xxxx的部分(稱為尾數(shù)或有效數(shù)字前鹅,負責數(shù)字的精度)保存在64位浮點數(shù)(見
fraction
部分,共52位)尺栖,最長可能為52位嫡纠。因此(算上第一位不顯示的位)JavaScript 提供的有效數(shù)字最長為53個二進制位。
精度最多只能到53個二進制位延赌,這意味著除盏,絕對值小于2的53次方的整數(shù),即-(253-1)到253-1挫以,都可以精確表示者蠕。
參考
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
http://javascript.ruanyifeng.com/grammar/number.html#toc1