1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
因?yàn)?javascript 像這樣處理數(shù)字。你應(yīng)該考慮到它不會(huì)失敗。您可以在此處閱讀相關(guān)信息。 http://speakingjs.com/es5/ch11.html
對(duì)于 54 位,最低有效位始終為 0,對(duì)于 55 位,兩個(gè)最低有效位始終為 0,依此類推。這意味著對(duì)于 54 位,我們只能表示每隔兩個(gè)數(shù)字,對(duì)于 55 位只能表示每四個(gè)數(shù)字,依此類推。例如:
Math.pow(2, 53) - 1 // OK 9007199254740991
Math.pow(2, 53) // OK 9007199254740992
Math.pow(2, 53) + 1 // 無(wú)法表示 9007199254740992
Math.pow(2, 53) + 2 // 好的 9007199254740994
最佳實(shí)踐
如果您使用高達(dá) 53 位大小的整數(shù),則沒(méi)有問(wèn)題。不幸的是,您會(huì)經(jīng)常在編程(Twitter ID、數(shù)據(jù)庫(kù)等)中遇到 64 位無(wú)符號(hào)整數(shù)。這些必須存儲(chǔ)在 JavaScript 中的字符串中。如果你想用這樣的整數(shù)進(jìn)行算術(shù)運(yùn)算,你需要特殊的庫(kù)。有計(jì)劃將更大的整數(shù)引入 JavaScript,但這需要一段時(shí)間。
添加回答
舉報(bào)