Java 浮点高精度库 [已关闭]
2022-09-01 22:36:52
任意精度算术页面上提到了三个库:java.math(包含提到的BigDecimal),Apfloat和JScience。我对它们进行了一些速度检查,仅使用加法和乘法。
结果是,对于相对较少的位数,BigDecimal是可以的(对于1000位,它的速度是其他数字的一半),但是如果你使用更多的数字,它就远远不够了 - JScience的速度大约快4倍。但明显的性能赢家是Apfloat。其他库似乎使用朴素的乘法算法,这些算法花费的时间与位数的平方成正比,但Apfloat的时间似乎几乎是线性增长的。在10000位数字上,它的速度是JScience的4倍,但在40000位数字上,它的速度是JScience的16倍。
另一方面:JScience为数学问题提供了出色的功能:矩阵,向量,符号算法,方程组的解等等。因此,我可能会使用JScience,稍后编写一个包装器,将Apfloat集成到JScience的算法中 - 由于良好的设计,这似乎很容易实现。
(更新:我为JScience的数字包编写了一个测试套件,并修复了一些错误。这进入了4.3.1版本。所以我可以推荐看看它。