DecimalFormat 默认使用的是进位方式是HALF_EVEN,有点坑,规律就是看进舍位的前一位是奇数还是偶数
奇数:四舍五入
偶数:五舍六入
如3.25 保存一位小数,进舍位前一位是2,2是偶数,五舍六入 结果就是3.2,如果是3.26 结果就是3.3
再如3.75 保存一位小数 进舍位前一位是7,7是奇数,四舍五入 结果就是3.8
如果想实现四舍五入,增加下面代码,切换进位方式
fmt.setRoundingMode(RoundingMode.HALF_UP);
public static void main(String[] args) {
DecimalFormat fmt=new DecimalFormat("0.#");
fmt.setRoundingMode(RoundingMode.HALF_UP);
double a=3.25,b=3.75;
System.out.println(fmt.format(a));
System.out.println(fmt.format(b));
}
ps:format方法直接传double类型会有各种想不到的坑,建议这样使用 :
fmt.format(BigDecimal.valueOf(a)) 或 fmt.format(new BigDecimal(a))