当前位置:  开发笔记 > 编程语言 > 正文

Java浮点高精度库

如何解决《Java浮点高精度库》经验,为你挑选了2个好方法。

哪些Java库可以快速实现浮点或定点操作,精度为几千位?他们的表现如何?

对我来说,一个要求是它实现了一种乘法算法,该算法优于天真乘法算法,该算法花费4倍于2倍大数字的数字(比较乘法算法).



1> Hans-Peter S..:

Arbitrary Precision Arithmetic页面上提到了三个库: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版本.所以我建议你查看它.)


有些库支持三角函数吗?

2> Jon Skeet..:

你检查过BigDecimal的性能吗?我在JavaDoc中看不到任何明显的东西,但它肯定是我的第一个停靠点.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有