当我使用函数时,我得到了一个非常奇怪的结果,我认为我在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));