Java数字/数学抽象

时间:2011-11-11 07:50:29

标签: java math abstraction bigdecimal

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

是否有任何现有的库允许抽象这些数字格式,以便抽象出不同的数学方法,或者我是否必须创建自己的数学?

我已经开始编写了一些代码,这似乎正在起作用 okay ,但是如果有一个经过良好测试的库而不是重新发明我认为的轮子会好得多。

已编辑以使用以下评论中的内容澄清情况:

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

1 个答案:

答案 0 :(得分:5)

double的精度是float的两倍以上,通常不会慢10%。恕我直言,使用float很少有理由,使用doubleBigDecimal通常会更好。