Java中BigDecimal的HALF

HALF_EVEN是什么意思呢?如果要丢掉的数字不是5的话,需要看这个数字前面的数字的奇偶性,如果是奇数,使用HALF_UP规则;如果是偶数使用HALF_DOWN规则;如果要丢掉的数字是5的话,round到它的偶数邻居上;

round到它的偶数邻居上是什么意思呢?

例子:

System.out.println("==================");for(int i = 0; i < 10; i ++) {StringBuffer sb = new StringBuffer();sb.append(i);sb.append(".5");BigDecimal bdx = new BigDecimal(sb.toString());System.out.println(sb + " " +bdx.setScale(0, RoundingMode.HALF_EVEN));}System.out.println("==================");for(int i = 0; i < 10; i ++) {StringBuffer sb = new StringBuffer();sb.append("0.");sb.append(i);sb.append("5");BigDecimal bdx = new BigDecimal(sb.toString());System.out.println(sb + " " +bdx.setScale(1, RoundingMode.HALF_EVEN));}输出是:

==================0.5 0 –>0.5距离0和1都是0.5,但是0是偶数,所有round到01.5 22.5 23.5 44.5 45.5 66.5 67.5 88.5 89.5 10==================0.05 0.00.15 0.20.25 0.20.35 0.40.45 0.40.55 0.60.65 0.60.75 0.80.85 0.80.95 1.0

,打掉的应是脆弱的铁屑,锻成的将是锋利的钢刀。

Java中BigDecimal的HALF

相关文章:

你感兴趣的文章:

标签云: