DecimalForma四舍五入问题

今天测试发现一个问题,DecimalFormat处理1.24385,取四位小数的时候,得出的结果是1.2438,搜了下,DecimalFormat默认的是4舍,6入,5则奇入偶舍。
改了舍入方式,发现问题还是存在,在stackoverflow上发现是数据精度问题,由string转成bigdecimal再转换则没问题了,先记录下,后续有空再看看源码。
这小问题浪费了差不多一个小时。。。。

@Test
public void test2() {
System.out.println("");
double a = 1.24385;
System.out.println("=23yy=" + new BigDecimal(a).toString());
System.out.println("23
=uu
" + new BigDecimal(String.valueOf(a)).toString());
DecimalFormat df = new DecimalFormat("#.####");
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println("df
=====" + df.format(a));
System.out.println(“df2=======” + df.format(new BigDecimal(String.valueOf(a))));
}


版权声明:本文为YungHwong原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。