簡體   English   中英

為什么當我將這個數字記錄到控制台時,JavaScript 會四舍五入?

[英]Why does JavaScript round up this number when I log it to the console?

為什么:

 console.log( 9999999999999999 ); //log 10000000000000000

這篇文章提到了它,但我真的不明白為什么

因為 javascript 處理這樣的數字。 你應該考慮到它不會失敗。 您可以在此處閱讀相關內容。 http://speakingjs.com/es5/ch11.html

對於 54 位,最低有效位始終為 0,對於 55 位,兩個最低有效位始終為 0,依此類推。 這意味着對於 54 位,我們只能表示每隔一個數字,對於 55 位,我們只能表示每隔四個數字,依此類推。 例如:

Math.pow(2, 53) - 1 // OK 9007199254740991
Math.pow(2, 53) // OK 9007199254740992
Math.pow(2, 53) + 1 // 不能表示 9007199254740992
Math.pow(2, 53) + 2 // OK 9007199254740994

最佳實踐

如果您使用高達 53 位大小的整數,那就沒問題了。 不幸的是,您在編程中經常會遇到 64 位無符號整數(Twitter ID、數據庫等)。 這些必須存儲在 JavaScript 中的字符串中。 如果你想用這樣的整數進行算術運算,你需要特殊的庫。 有計划將更大的整數引入 JavaScript,但這需要一段時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM