![](/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.