需求:将 double 的结果保留2位小数
返回结果是 double 的:
-
四舍五入
double d = 123.456; d = (double) Math.round(d * 100) / 100;
-
其他形式
double d = 123.455; BigDecimal b = new BigDecimal(d+""); // 直接传入 float或 double,会损失精度 d = b.setScale(2, BigDeclimal.ROUND_HALF_UP).doubleValue(); // 123.46 // ROUND_HALF_UP 四舍五入 // ROUND_HALF_DOWN 五舍六入 123.45 // ROUND_UP 直接进位 123.46 // ROUND_DOWN 直接丢弃末尾 123.45
返回结果是 String 的:
-
#.00
保留后两位,后面的直接舍弃double d = 123.455; DecimalFormat df = new DecimalFormat("#.00"); String str = df.format(d); // 123.45
-
%.2f
保留后两位,四舍五入double d = 123.456; String.format("%.2f", d); // 123.46
-
RoundingMode.HALF_DOWN
五舍六入,负数先取绝对值,再五舍六入,然后再变为负数RoundingMode.HALF_UP
四舍五入,负数先取绝对值,再四舍五入,然后再变为负数double d = 123.456; NumberFormat nf = NumberFormat.getNumberInstance(); // 保留两位小数 nf.setRoundingMode(RoundingMode.UP);