0
我有一個數字n
這是16位數字(1111111111111111
)。當我添加另一個1
到這個數字(使它11111111111111111
,17位數字長)它顯示爲11111111111111112
。JavaScript的最大數量大小與尾隨零不相同
這是可以理解的,因爲它比Number.MAX_SAFE_INTEGER
大,但是如果我添加了一個0
代替(使它11111111111111110
,仍有17位長),顯示正確數量爲11111111111111110
。
let a = 11111111111111111;
let b = 11111111111111110;
console.log(a, b); // 11111111111111112 11111111111111110
行爲上面任何最終位發生時,除了0
。這種行爲差異的原因是什麼?
我已經看過"Large numbers erroneously rounded in Javascript",但這並不能解釋爲什麼在添加一個非零數字是它是圓的,而不是在添加一個零。
看起來像一個整數舍入問題在javascript – mtizziani
Downvoter:爲什麼downvote?這是一個很好解釋的問題,我找不到重複的問題。 –
可能重複的[大量錯誤地在Javascript中舍入](http://stackoverflow.com/questions/1379934/large-numbers-erroneously-rounded-in-javascript) – Xufox