Ash*_*ral 1 java math rounding bigdecimal
我试图使用scale = 3和HALF_UP舍入模式舍入0.14049,并希望看到舍入值= 0.141但是得到0.140.
根据我的理解,最后的十进制数字9应该向上舍入4到5,当使用比例3时,它应该反过来向上舍入0到1,我应该看到0.141.
这是BigDecimal setScale方法中的错误还是我对Rounding的期望是错误的.如何获得类似于0.141而不是0.140的舍入值?
BigDecimal bd=new BigDecimal("0.14049");
BigDecimal normalizedField = field.setScale(3, RoundingMode.HALF_UP);
System.out.println(normalizedField);
// Output = 0.140
Run Code Online (Sandbox Code Playgroud)
das*_*ght 10
根据我的理解,最后的十进制数字9应该向上舍入4到5,当使用比例3时,它应该反过来向上舍入0到1,我应该看到0.141.
这种理解是不正确的.舍入不是一个迭代过程.只考虑刻度位置后的第一个数字,而不是整个数字链.在你的情况下,数字是4,所以它被转换为零.