这两个调用有什么区别? (有没有?)
// 1.
new BigDecimal("3.53456").round(new MathContext(4, RoundingMode.HALF_UP));
// 2.
new BigDecimal("3.53456").setScale(4, RoundingMode.HALF_UP);
最佳答案
提到但没有直接解决的一个重要点是 “精度” 和 “比例” 之间的区别以及它们在两个语句中的使用方式。 “精度” 是数字中有效数字的总数。 "scale" 是小数点右边的位数。
MathContext 构造函数只接受精度和 RoundingMode 作为参数,因此在第一条语句中从未指定比例。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
关于java - BigDecimal setScale 和 round,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3843440/