我们都知道double和float都是浮点型,在转型或者比较的时候可能出现问题,这里讲一下怎么针对double类型做精度处理
返回类型为double(四舍五入)
- 使用Math.round转成long再转回double
double dou = 3.1487426; dou = (double) Math.round(dou * 100) / 100; System.out.println(dou);
- 使用BigDecimal进行格式化
double dou = 3.1487426; BigDecimal bigDecimal = new BigDecimal(dou).setScale(2, RoundingMode.HALF_UP); double newDouble = bigDecimal.doubleValue(); System.out.println(newDouble);
返回类型是 String
- 使用String.format()格式化(四舍五入)
double dou = 3.1487426; String douStr = String.format("%.2f", dou) System.out.println(douStr);
- 使用NumberFormat进行格式化(四舍五入)
double dou = 3.1487426; NumberFormat numberFormat = NumberFormat.getNumberInstance(); numberFormat.setMaximumFractionDigits(2); // numberFormat.setRoundingMode(RoundingMode.UP); //默认的模式就是四舍五入,可以省略 String douStr = numberFormat.format(dou) System.out.println(douStr);
- 使用BigDecimal进行格式化(四舍五入)
double dou = 3.1487426; DecimalFormat decimalFormat = new DecimalFormat("#.00"); String str = decimalFormat.format(dou); System.out.println(str);