java - 正确使用 BigDecimal

标签 java double bigdecimal

我不确定我这样做是否正确。

我正在进行需要尽可能准确的科学计算,因此我将 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/

相关文章:

java - 数字格式/打印错误

java - 访问由另一个应用程序创建的 Derby DB

java - 如何使用java备份mssql数据库?

java - 如何正确解决 Hudson 和 ant 的部署权限问题?

java - 如何在Java中实现方法链?

iphone - NSString - 截断小数点后的所有内容

c - 带有 %g 和正确的 double 值的 printf 打印出令人讨厌的数字 - 可能是什么原因?

java - 大十进制下溢

java - BigDecimal,setScale 问题

javascript - 除法结果不正确