java Big Decimal如何保持精度

时间:2017-09-19 13:10:43

标签: java bigdecimal

我从另一个中减去一个大十字形。吼叫是代码。

BigDecimal s=new BigDecimal(new BigDecimal("472.24").floatValue() - new BigDecimal("100.0").floatValue());
System.out.println(s);

预期答案是= 372.24

实际答案= 372.239990234375

任何人都可以解释在BigDecimal中获得预期答案的原因和解决方案

3 个答案:

答案 0 :(得分:5)

为什么不使用.subtract

BigDecimal s = new BigDecimal("472.24");
BigDecimal result = s.subtract(new BigDecimal("100.0"));
System.out.println(result);

<强>输出

372.24

答案 1 :(得分:3)

没有。您减去BigDecimal值。您正在减去两个 float 值 - 并且应用完全不同的“规则”。

您必须使用内置的subtract()方法才能减去那些BigDecimal对象!

这就是全部。

答案 2 :(得分:1)

你应该这样减去它们:

System.out.println(new BigDecimal("472.24").subtract(new BigDecimal("100.0")));