java Big Decimal如何保持精度

Dny*_*ote -1 java bigdecimal

我从另一个减去一个大十字架.吼叫是代码.

BigDecimal s=new BigDecimal(new BigDecimal("472.24").floatValue() - new BigDecimal("100.0").floatValue());
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

预期的答案是= 372.24

实际答案= 372.239990234375

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

YCF*_*F_L 5

为什么不使用.subtract:

BigDecimal s = new BigDecimal("472.24");
BigDecimal result = s.subtract(new BigDecimal("100.0"));
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)

产量

372.24
Run Code Online (Sandbox Code Playgroud)