建议Math.round(double num);取精度
使用BigDecimal对象的方式
public static void bigDecimalTest(){
double f = 10.2345;
BigDecimal b0 = new BigDecimal(f);
BigDecimal b1 = new BigDecimal(f);
BigDecimal b2 = new BigDecimal(f);
BigDecimal b3 = new BigDecimal(f);
BigDecimal b4 = new BigDecimal(f);
BigDecimal b5 = new BigDecimal(f);
BigDecimal b6 = new BigDecimal(f);
BigDecimal b7 = new BigDecimal("10.2345");
double f0 = b0.setScale(3, BigDecimal.ROUND_UP).doubleValue();
double f1 = b1.setScale(3, BigDecimal.ROUND_DOWN).doubleValue();
double f2 = b2.setScale(3, BigDecimal.ROUND_CEILING).doubleValue();
double f3 = b3.setScale(3, BigDecimal.ROUND_FLOOR).doubleValue();
double f4 = b4.setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
double f5 = b5.setScale(3, BigDecimal.ROUND_HALF_DOWN).doubleValue();
double f6 = b6.setScale(3, BigDecimal.ROUND_HALF_EVEN).doubleValue();
double f7 = b7.setScale(4, BigDecimal.ROUND_UNNECESSARY).doubleValue();
System.out.println(f + "使用 远离零方向舍入(ROUND_UP)方式四舍五入结果为:" + f0);
System.out.println(f + "使用 趋向零方向舍入(ROUND_DOWN)方式四舍五入结果为:" + f1);
System.out.println(f + "使用 向正无穷方向舍入(ROUND_CEILING)方式四舍五入结果为:" + f2);
System.out.println(f + "使用 向负无穷方向舍入(ROUND_FLOOR)方式四舍五入结果为:" + f3);
System.out.println(f + "使用 最近数字舍入(5进)(ROUND_HALF_UP)方式四舍五入结果为:" + f4);
System.out.println(f + "使用 最近数字舍入(5舍)(ROUND_HALF_DOWN)方式四舍五入结果为:" + f5);
System.out.println(f + "使用 银行家舍入法(ROUND_HALF_EVEN)方式四舍五入结果为:" + f6);
System.out.println(f + "使用 不需要舍入模式(ROUND_UNNECESSARY)方式结果为:" + f7);
}