我不确定我这样做是否正确。
我正在进行需要尽可能准确的科学计算,因此我将 Double
的现有用法转换为 BigDecimal
。
// before
double tmp = x - (y / z);
// after
BigDecimal tmp = new BigDecimal(
x.value().subtract(y.value().divide(z.value())).toString());
这是合乎逻辑的还是什么?
最佳答案
在将结果转换为 BigDecimal 之前,您正在使用 double 进行算术运算。这样你就不会获得任何精度。
您应该尽快将每个数字转换为 BigDecimal,然后在 BigDecimal 表示上使用 BigDecimals 的方法(减法、除法等)进行算术运算。
BigDecimal bdX = new BigDecimal(x);
BigDecimal bdY = new BigDecimal(y);
BigDecimal bdZ = new BigDecimal(z);
BigDecimal tmp = bdX.subtract(bdY.divide(bdZ));
关于java - 正确使用 BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15266170/