来自 java .555 数学包的舍入模式不起作用
Rounding mode from java Math package for .555 not works
我的问题如下,我正在使用舍入模式来舍入和截断一些数量,但是 none 枚举适用于我的客户需要的业务规则,我举了一个例子以下:
new BigDecimal(5.551).setScale(2, RoundingMode.[ENUM]) <-- DEberia regresar 5.55 OK
new BigDecimal(5.554).setScale(2, RoundingMode.[ENUM]) <-- DEberia regresar 5.55 OK
new BigDecimal(5.555).setScale(2, RoundingMode.[ENUM]) <-- DEberia regresar 5.55 It should be 5.56
new BigDecimal(5.559).setScale(2, RoundingMode.[ENUM]) <-- DEberia regresar 5.56 OK
我用过 HALF_DOWN,这是最接近的,但我遇到了这种情况,我有纯五,所以它不再起作用了。
按如下操作:
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
System.out.println(new BigDecimal(String.valueOf(5.551)).setScale(2, RoundingMode.HALF_UP));
System.out.println(new BigDecimal(String.valueOf(5.554)).setScale(2, RoundingMode.HALF_UP));
System.out.println(new BigDecimal(String.valueOf(5.555)).setScale(2, RoundingMode.HALF_UP));
System.out.println(new BigDecimal(String.valueOf(5.559)).setScale(2, RoundingMode.HALF_UP));
}
}
输出:
5.55
5.55
5.56
5.56
我的问题如下,我正在使用舍入模式来舍入和截断一些数量,但是 none 枚举适用于我的客户需要的业务规则,我举了一个例子以下:
new BigDecimal(5.551).setScale(2, RoundingMode.[ENUM]) <-- DEberia regresar 5.55 OK
new BigDecimal(5.554).setScale(2, RoundingMode.[ENUM]) <-- DEberia regresar 5.55 OK
new BigDecimal(5.555).setScale(2, RoundingMode.[ENUM]) <-- DEberia regresar 5.55 It should be 5.56
new BigDecimal(5.559).setScale(2, RoundingMode.[ENUM]) <-- DEberia regresar 5.56 OK
我用过 HALF_DOWN,这是最接近的,但我遇到了这种情况,我有纯五,所以它不再起作用了。
按如下操作:
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
System.out.println(new BigDecimal(String.valueOf(5.551)).setScale(2, RoundingMode.HALF_UP));
System.out.println(new BigDecimal(String.valueOf(5.554)).setScale(2, RoundingMode.HALF_UP));
System.out.println(new BigDecimal(String.valueOf(5.555)).setScale(2, RoundingMode.HALF_UP));
System.out.println(new BigDecimal(String.valueOf(5.559)).setScale(2, RoundingMode.HALF_UP));
}
}
输出:
5.55
5.55
5.56
5.56