![](/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.