![](/img/trans.png)
[英]BigDecimal - MathContext.DECIMAL64 vs MathContext.DECIMAL128
[英]BigDecimal and MathContext
有人可以解釋為什么這兩個結果不同嗎?
BigDecimal bd1 = new BigDecimal(1234.5678)
.divide(
new BigDecimal(1.19),
4,
RoundingMode.CEILING
);
BigDecimal bd2 = new BigDecimal(1234.5678)
.divide(
new BigDecimal(1.19),
new MathContext(4, RoundingMode.CEILING)
);
結果 :
bd1: 1037.4520
bd2: 1038
因為在MathContext(4, RoundingMode.CEILING)
,4是精度,但在.divide(new BigDecimal(1.19), 4, RoundingMode.CEILING);
,4為刻度。 您可以在此處看到“精度”和“比例”之間的區別
提到但沒有直接解決的一個重要問題是“ 精度 ”和“ 小數 位數 ”之間的區別,以及在兩種陳述中如何使用它們。 “ precision ”是數字中有效數字的總數。 “ scale ”是小數點右邊的位數。
因此,如果您將第二個更改為
final BigDecimal bd2 = new BigDecimal(1234.5678)
.divide(
new BigDecimal(1.19),
new MathContext(8, RoundingMode.CEILING)
);
您有相同的結果:
1037.4520
1037.4520
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.