Java 数字/数学抽象

标签 java math abstraction bigdecimal

我目前正在编写一个包含大量数学计算的应用程序。在某些情况下,这些计算需要快速完成,我们可以处理少量精度损失以尽快完成数学运算。另一方面,有时我们需要非常精确地完成计算(并且在两者之间有一些用例,我们将实现我们自己的乘法/除法/加法/减法/幂等方法,它比 float 更精确* float(或 double * double,我知道 float 是一个糟糕的选择),但比 BigDecimal.multiply(BigDecimal)... 甚至比 apfloat 而不是 BigDecimal 更快。

是否有任何现有库允许对此类数字格式进行抽象,以便抽象出不同的数学计算方式,还是我必须创建自己的库?

我已经开始编写一些代码,这似乎工作没问题,但我认为拥有一个经过良好测试的库比重新发明轮子要好得多。

已编辑以通过以下评论的内容澄清情况:

问题是 BigDecimal 比 double * double 等慢得多。我们需要能够在精度和速度之间切换。这背后的原因是我们需要能够运行快速测试以进行调试并与真实世界的数据进行交叉检查(不需要非常准确),但最终的模拟(通常需要几天到几周的时间:对于调试)将需要高精度。因此需要能够随意切换。

最佳答案

double 的精度是 float 的两倍多,而且速度通常不超过 10%。恕我直言,很少有充分理由使用 float,使用 doubleBigDecimal 通常更好。

关于Java 数字/数学抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8091083/

相关文章:

java - 尝试将 GWT 集成到 OSGi 包中

function - 为什么我的Scheme Cube-Root程序中出现此错误?

java - 使用字节码生成的框架是否会造成抽象漏洞?

c - C 中的面向对象程序 - 列表

java - 添加新的键值对替换 Java HashMap 中的所有值

java - JAX-RS 子资源 @PathParam 值与 java 方法及其封闭 java 类型的任何 @Path 注释模板参数不匹配

java - Spring 3 到 Spring 4 迁移,未找到依赖关系的 Dto Mapper 类型的合格 bean

algorithm - 是否可以使用遗传编程找到一系列方程?

algorithm - 获取特殊素数 float 模数的快速、可向量化方法?

c++ - "data abstraction"到底是什么意思?