簡體   English   中英

任意精度JavaScript上的浮點數

[英]Arbitrary precision Float numbers on JavaScript

我的網站上有一些輸入表示浮點數,最多十位精度數字(十進制)。 在某些時候,在客戶端驗證代碼中,我需要比較其中的幾個值以查看它們是否相等,並且在這里,正如您所期望的那樣,IEEE754的內在函數使得簡單的檢查失敗了(如( 2.0000000000 == 2.0000000001)= true。

我可以打破點的每一邊的兩個長點的浮點數,使每一邊長64位並手動進行比較,但它看起來很難看!

任何體面的Javascript庫來處理Javascript上的任意(或至少保證)精度浮點數?

提前致謝!

PS:基於GWT的解決方案有一個++

http://code.google.com/p/gwt-math/上有GWT-MAT​​H庫。

但是,我警告你,這是java.BigDecimal的java-> javascript自動轉換的GWT jsni重疊(實際上是舊的com.ibm.math.BigDecimal)。

它有效,但速度不快。 (也不精益。它會在你的項目中填上70k)。

在我的工作場所,我們正在研究一個簡單的十進制小數點,但沒有什么值得發布的。 :(

使用任意精度整數庫,例如silentmatt的javascript-biginteger ,它可以使用任意大小的整數進行存儲和計算。

由於您需要十位小數,因此您需要將值n存儲為n×10^10 例如,將1存儲為10000000000 (十個零), 1.515000000000 (九個零)等。要向用戶顯示值,只需在最后一個字符前面放置一個小數點(然后切掉任何尾隨)如果你想要零)。

或者你可以將分子和分母存儲為大整數,這樣就可以得到任意精確的小數值(但要注意 - 小數值往往非常快)。

暫無
暫無

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

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