今天在看double的舍入模式,然后看到了BigDecimal的相关文档,对于下面两种模式的舍入有一个小问题没想明白,下面两种舍入模式:
ROUND_HALF_DOWN:
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
ROUND_HALF_UP:
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。
保留两位小数的时候对于下面三个的输出结果感到奇怪,为什么0.255舍入后是0.26,0.155和0.355分别是0.15和0.35,有没有大佬能说明一下呀
double d = 0.155;
double d1 = 0.255;
double d2 = 0.355;
BigDecimal bigDecimal = new BigDecimal(d);
BigDecimal bigDecimal1 = new BigDecimal(d1);
BigDecimal bigDecimal2 = new BigDecimal(d2);
System.out.println(bigDecimal.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue());
System.out.println(bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
System.out.println(bigDecimal1.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue());
System.out.println(bigDecimal1.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
System.out.println(bigDecimal2.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue());
System.out.println(bigDecimal2.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
输出结果:
0.15
0.15
0.26
0.26
0.35
0.35