为什么我的函数在将字符串转换为双精度时显示一个奇怪的结果



当我使用函数时,我得到了一个非常奇怪的结果,我认为我在java中缺少了舍入和双精度。

例如,当我为数字提供值00159300,为转换提供值100时,我有159300000000002,这是不可能的!

public static String convertMultiply(String number, String conversion) {
number=number.replace(",", ".");
BigDecimal res=BigDecimal.valueOf(Double.valueOf(number)*Integer.valueOf(conversion));
res=res.stripTrailingZeros();
return res.toPlainString().replace(".", ",");
}

提前感谢!

Double是Java中十进制值的近似值。相反,将使用double的线路替换为:

BigDecimal res = (new BigDecimal(number)).multiply(new BigDecimal(conversion));

最新更新