System.out.println("Result="+new BigDecimal(((63.19* 15) + (63.37* 5))).divide(new BigDecimal(15 + 5), MathContext.DECIMAL64).doubleValue());
Result=63.23499999999999
但是使用MathContext.DECIMAL32我们得到了正确的结果,如下所示:
System.out.println("Result="+new BigDecimal(((63.19* 15) + (63.37* 5))).divide(new BigDecimal(15 + 5), MathContext.DECIMAL32).doubleValue());
Result=63.235
发布于 2015-05-07 01:27:02
这里的问题不是BigDecimal,而是(63.19* 15) + (63.37* 5)不是1264.7而是1264.6999999999998,因为前者不能表示为double。
如果你这样做了
new BigDecimal("1264.7").divide(new BigDecimal("20"), MathContext.DECIMAL64)相反,您会得到想要的结果。
https://stackoverflow.com/questions/30083383
复制相似问题