在 Java 中,对 double(双精度浮点数)进行四舍五入,常见有以下几种方式,按使用场景从简单到规范说明:
Math.round()(最常用)double d = 3.14159;
long result = Math.round(d); // 四舍五入为整数
System.out.println(result); // 3
⚠️ 注意:
Math.round(double) 返回的是 longdouble d = 3.14159;
double result = Math.round(d * 100.0) / 100.0;
System.out.println(result); // 3.14
原理:
roundBigDecimal(推荐,精度最安全 ✅)import java.math.BigDecimal;
import java.math.RoundingMode;
double d = 3.14159;
BigDecimal bd = new BigDecimal(Double.toString(d));
double result = bd.setScale(2, RoundingMode.HALF_UP).doubleValue();
System.out.println(result); // 3.14
✅ 优点:
HALF_UP)⚠️ 不要用 new BigDecimal(double),会有精度问题
DecimalFormat(适合显示)import java.text.DecimalFormat;
double d = 3.14159;
DecimalFormat df = new DecimalFormat("#.00");
String result = df.format(d);
System.out.println(result); // "3.14"
⚠️ 返回的是 String,适合展示,不适合计算
String.format()double d = 3.14159;
String result = String.format("%.2f", d);
System.out.println(result); // "3.14"
| 场景 | 推荐方式 |
|---|---|
| 整数四舍五入 | Math.round() |
| 保留 N 位小数(计算) | BigDecimal |
| 展示 / 打印 | DecimalFormat / String.format |
如果你有具体保留几位小数、是否用于金额计算、是否允许误差等需求,我可以给你更合适的写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。