杰瑞科技汇

Java保留2位小数四舍五入怎么实现?

使用 String.format()DecimalFormat(推荐)

适用于格式化输出(如显示给用户),但返回的是字符串类型。

Java保留2位小数四舍五入怎么实现?-图1
(图片来源网络,侵删)

示例代码:

double num = 3.4567;
// 使用 String.format()
String formattedNum = String.format("%.2f", num);
System.out.println(formattedNum); // 输出: 3.46
// 使用 DecimalFormat
import java.text.DecimalFormat;
DecimalFormat df = new DecimalFormat("#.00");
String formattedNum2 = df.format(num);
System.out.println(formattedNum2); // 输出: 3.46

使用 Math.round()(适用于数值计算)

直接对数值进行四舍五入,返回 longdouble 类型。

示例代码:

double num = 3.4567;
// 四舍五入到两位小数(先乘100,再round,再除以100)
double roundedNum = Math.round(num * 100.0) / 100.0;
System.out.println(roundedNum); // 输出: 3.46

注意:

  • 如果输入是负数,Math.round() 也能正确四舍五入(如 -3.4567-3.46)。
  • 这种方法会改变原始数值类型(如 doublelongdouble)。

使用 BigDecimal(高精度计算,推荐用于金融场景)

避免浮点数精度问题,适合需要高精度的场景(如货币计算)。

示例代码:

import java.math.BigDecimal;
import java.math.RoundingMode;
double num = 3.4567;
// 先转为 BigDecimal,再设置舍入模式
BigDecimal bd = new BigDecimal(num).setScale(2, RoundingMode.HALF_UP);
double roundedNum = bd.doubleValue();
System.out.println(roundedNum); // 输出: 3.46
// 直接格式化为字符串(避免精度问题)
String formattedBd = bd.toString();
System.out.println(formattedBd); // 输出: 3.46

优点:

Java保留2位小数四舍五入怎么实现?-图2
(图片来源网络,侵删)
  • 避免浮点数精度问题(如 1 + 0.2 的误差)。
  • 支持多种舍入模式(如 HALF_UPHALF_DOWN 等)。

使用 printf(直接控制台输出)

适合直接打印结果,不改变原始变量。

示例代码:

double num = 3.4567;
System.out.printf("%.2f%n", num); // 输出: 3.46

总结对比

方法 返回类型 适用场景 注意事项
String.format() String 格式化输出(如显示给用户) 返回字符串,需手动转数值
DecimalFormat String 格式化输出(本地化支持好) 返回字符串,需手动转数值
Math.round() double/long 数值计算(需要数值类型) 直接修改数值,可能丢失精度
BigDecimal BigDecimal/double 高精度计算(如金融) 最安全,但代码稍复杂
printf void 直接控制台输出 不改变原始变量

推荐选择

  • 简单格式化输出String.format()DecimalFormat
  • 数值计算Math.round()BigDecimal(推荐后者)。
  • 避免浮点数误差优先用 BigDecimal

根据你的需求选择最合适的方法!

Java保留2位小数四舍五入怎么实现?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇