![](/img/trans.png)
[英]Arbitrary precision numbers and Javascript, Google Web Toolkit
[英]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-MATH庫。
但是,我警告你,這是java.BigDecimal的java-> javascript自動轉換的GWT jsni重疊(實際上是舊的com.ibm.math.BigDecimal)。
它有效,但速度不快。 (也不精益。它會在你的項目中填上70k)。
在我的工作場所,我們正在研究一個簡單的十進制小數點,但沒有什么值得發布的。 :(
使用任意精度整數庫,例如silentmatt的javascript-biginteger ,它可以使用任意大小的整數進行存儲和計算。
由於您需要十位小數,因此您需要將值n
存儲為n×10^10
。 例如,將1
存儲為10000000000
(十個零), 1.5
為15000000000
(九個零)等。要向用戶顯示值,只需在最后一個字符前面放置一個小數點(然后切掉任何尾隨)如果你想要零)。
或者你可以將分子和分母存儲為大整數,這樣就可以得到任意精確的小數值(但要注意 - 小數值往往非常快)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.