2017-05-18 22 views
0

我有一個問題,如果我輸入9十六次,並使用會計js格式化它,甚至Math.round(9999999999999999)它變成10000000000000000。我如何解決這個問題。如何解決在JavaScript中的整數問題

引用會計js或者幫助我解決一些與math.random有關的問題。

http://openexchangerates.github.io/accounting.js/

+1

我建議你熟悉'MAX_SAFE_INTEGER' [這裏]的MDN文檔(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)。我認爲這與長度整數的一些限制有關。 –

+1

您可能想要閱讀[this](https://medium.com/the-node-js-collection/javascripts-number-type-8d59199db1b6) –

+1

您是否以字符串的形式獲取值?預期的結果是什麼?另請參見[如何將1添加到在JavaScript中表示爲一個字符串的大整數?](http://stackoverflow.com/questions/43614407/how-do-i-add-1-to-a-big-integer - 表示爲一個字符串在JavaScript /) – guest271314

回答

3

浮點不能準確地表示所有的數字。只要您的號碼高於9,007,199,254,740,991(Number.MAX_SAFE_INTEGER),您就會以整數形式顯示此信息。

超出Number.MAX_SAFE_INTEGER + 1(9007199254740992),IEEE-754浮點格式不能再代表每個連續的整數,因爲您不再有1s位;最低位現在代表2的倍數。最終,如果我們繼續前進,我們會失去那一點,只能以4的倍數工作。等等。

您的值遠高於該閾值,因此它們會四捨五入到最接近的可表示值。

+0

如何在JavaScript中解決這個問題,因爲我有一個需要將它存儲爲9十六次相同 – user7386493

+0

如何使用百萬次大的值並調整顯示?不過請注意浮點數的最大值。 – Raptor

+0

事情是我利用會計js格式化財務方法模糊事件和unformatMoney在keydown事件當時,當我通過9999999999999999值unformatMethod,它變成10000000000000000.所以我需要解決這個問題 – user7386493