BigDecimal setScale 和 round

2023-12-12

这两个调用有什么区别? (有没有?)

// 1.
new BigDecimal("3.53456").round(new MathContext(4, RoundingMode.HALF_UP));
// 2.
new BigDecimal("3.53456").setScale(4, RoundingMode.HALF_UP);

提到但没有直接解决的一个重要问题是“精确” and "scale"以及它们在两个语句中的使用方式。“精确”是数字中有效数字的总数。"scale"是小数点右边的位数。

MathContext 构造函数仅接受精度和 RoundingMode 作为参数,因此第一个语句中从未指定小数位数。

setScale()显然接受比例作为参数,以及 RoundingMode,但是第二个语句中从未指定精度。

如果将小数点向右移动一位,差异就会变得很明显:

// 1.
new BigDecimal("35.3456").round(new MathContext(4, RoundingMode.HALF_UP));
//result = 35.35
// 2.
new BigDecimal("35.3456").setScale(4, RoundingMode.HALF_UP);
// result = 35.3456
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BigDecimal setScale 和 round 的相关文章

随机推荐