java多种保存2位小数的对比

来源:互联网 发布:健康风险评估软件 编辑:程序博客网 时间:2024/05/01 10:35

今天导数据的时候,发现了一些保留2位小数的数据不准确,然后去搜索并总结了一些,列在这个位置,算是一个小心得。

代码:

DecimalFormat df = new DecimalFormat("######0.00"); 
NumberFormat ddf1=NumberFormat.getNumberInstance() ; 
ddf1.setMaximumFractionDigits(2); 
System.out.println(df.format(1.255D));
System.out.println(new BigDecimal(1.255).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
System.out.println(Math.round(1.255*100)/100.0);
System.out.println(ddf1.format(1.255));
System.out.println(String.format("%.2f", 1.255));
System.out.println(df.format(10.005D));
System.out.println(new BigDecimal(10.005).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
System.out.println(Math.round(10.005*100)/100.0);
System.out.println(ddf1.format(10.005));
System.out.println(String.format("%.2f", 10.005));


输出结果:

1.26
1.25
1.25
1.26
1.26
10.00
10.01
10.01
10
10.01

看的出来,这五种方式就String.format输出了这2种值类型下四舍五入的正确值,虽然计算金额的时候,大多推荐BigDecimal值类型来保存金额,获取更精确的值,但是在这个比较下,竟然输给了String.format,感到有些不可思议。

0 0
原创粉丝点击