这两个电话有什么区别?(有吗?)
// 1.
new BigDecimal("3.53456").round(new MathContext(4, RoundingMode.HALF_UP));
// 2.
new BigDecimal("3.53456").setScale(4, RoundingMode.HALF_UP);
这两个电话有什么区别?(有吗?)
// 1.
new BigDecimal("3.53456").round(new MathContext(4, RoundingMode.HALF_UP));
// 2.
new BigDecimal("3.53456").setScale(4, RoundingMode.HALF_UP);
其中一个重要的问题是,"precision"和"scale"之间的区别,以及它们在这两个陈述中的使用方式,这一点被提及,但没有直接提及."precision"是数字中有效位数的总数."scale"是小数点右边的位数.
MathContext构造函数只接受precision和RoundingMode作为参数,因此在第一条语句中从未指定scale.
setScale()
显然接受scale和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