Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

4年前关闭。



Improve this question




那里有哪些Java库可以快速实现浮点数或定点数的精度(几千个数字)?他们的表现如何?

对我的要求是,它实现的乘法算法要好于朴素乘法算法,因为朴素乘法算法需要4倍的时间来处理2倍的数字(比较Multiplication algorithms)。

最佳答案

Arbitrary Precision Arithmetic页面上提到了三个库:java.math(包含提到的BigDecimal),ApfloatJScience。我对它们进行了一些速度检查,仅使用加法和乘法。

结果是,对于相对较少的数字,BigDecimal可以(对于1000个数字,其速度是其他数字的一半),但是,如果您使用更多的数字,则可以解决-JScience快约4倍。但是明显的性能赢家是Apfloat。其他库似乎使用的是朴素的乘法算法,其耗时与数字位数的平方成正比,但是Apfloat的时间似乎几乎呈线性增长。在10000位数字上,它是JScience的4倍,但是在40000位数字上,它是JScience的16倍。

另一方面:JScience为数学问题提供了卓越的功能:矩阵, vector ,符号算法,方程组的解,以及不存在的问题。因此,我可能会选择JScience,然后写一个包装程序将Apfloat集成到JScience的算法中-由于设计良好,这似乎很容易实现。

(更新:我为JScience的数字包编写了一个测试套件,并修复了许多错误。此错误已发布到4.3.1。版中,因此,我建议您进行检查。)

关于java - Java浮点高精度库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/277309/

10-09 13:34