簡體   English   中英

是否存在使用MathContext.DECIMAL32提供Bigdecimal不能提供正確結果的條件?

[英]Is there any condition where Bigdecimal with MathContext.DECIMAL32 does not provides correct result?

System.out.println("Result="+new BigDecimal(((63.19* 15) + (63.37* 5))).divide(new BigDecimal(15 + 5), MathContext.DECIMAL64).doubleValue());

結果= 63.23499999999999

但是,通過MathContext.DECIMAL32我們可以得到正確的結果,請參見下文:

System.out.println("Result="+new BigDecimal(((63.19* 15) + (63.37* 5))).divide(new BigDecimal(15 + 5), MathContext.DECIMAL32).doubleValue());

結果= 63.235

這里的問題不是BigDecimal ,而是(63.19* 15) + (63.37* 5)不是1264.7而是1264.6999999999998 ,因為前者不能表示為double

如果你這樣做

new BigDecimal("1264.7").divide(new BigDecimal("20"), MathContext.DECIMAL64)

相反,您將獲得所需的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM