BigDecimal
首先 说一下自己遇到的问题
System.out.println(new BigDecimal("111.1212335")
.setScale(6, BigDecimal.ROUND_HALF_UP));//111.121234
System.out.println(new BigDecimal("111.1212335")
.setScale(6, BigDecimal.ROUND_HALF_DOWN));//111.121233
System.out.println(new BigDecimal("111.12345678")
.setScale(4, BigDecimal.ROUND_HALF_UP));//111.1235
System.out.println(new BigDecimal("111.12345678")
.setScale(4, BigDecimal.ROUND_HALF_DOWN));//111.1235
// 问题为啥这里的 ROUND_HALF_DOWN 小数点后第五位是5 为啥会给第四位进一??
ROUND_HALF_UP 与 ROUND_HALF_DOWN 的区别
先看看文档怎么解释的
ROUND_HALF_UP
若舍弃部分 (>=.5),则作 ROUND_UP ;否则,作 ROUND_DOWN 。
ROUND_HALF_DOWN
若舍弃部分 ( > 5) ROUND_UP;否则,作 ROUND_DOWN 。
ROUND_UP
总是在非 0 舍弃小数(即截断)之前增加数字。
ROUND_DOWN
从不在舍弃(即截断)的小数之前增加数字。
ROUND_UP 与 ROUND_DOWN 实例
// ROUND_DOWN 舍入模式向零舍入 不管是0还是9都不加 相当于 截取
double a4 = new BigDecimal("111.1934567").setScale(1,BigDecimal.ROUND_DOWN).doubleValue(); //111.1
System.out