今天测试发现一个问题,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))));
}