在 Java 中,对 Double(双精度浮点数)进行四舍五入有多种常见方式,下面按使用频率和可控制精度给你总结一下。
Math.round(最常用,整数级四舍五入)double d = 3.14159;
long result = Math.round(d); // 3
⚠️ 注意:
Math.round(double) 返回 longdouble d = 3.14159;
double result = Math.round(d * 100.0) / 100.0; // 3.14
BigDecimal(推荐,最精确)这是最安全、最可控的方式,尤其用于金额计算。
import java.math.BigDecimal;
import java.math.RoundingMode;
double d = 3.14159;
BigDecimal bd = new BigDecimal(d);
bd = bd.setScale(2, RoundingMode.HALF_UP);
double result = bd.doubleValue(); // 3.14
✅ 优点:
⚠️ 建议:用 String 构造 BigDecimal 更安全
BigDecimal bd = new BigDecimal("3.14159");
DecimalFormat(格式化输出用)适合展示,不适合计算。
import java.text.DecimalFormat;
double d = 3.14159;
DecimalFormat df = new DecimalFormat("#.##");
String result = df.format(d); // "3.14"
⚠️ 返回的是 String
String.formatdouble d = 3.14159;
String result = String.format("%.2f", d); // "3.14"
| 模式 | 说明 |
|---|---|
| HALF_UP | 四舍五入(常用) |
| HALF_DOWN | 五舍六入 |
| HALF_EVEN | 银行家舍入 |
| UP / DOWN | 向上 / 向下 |
| 场景 | 推荐方式 |
|---|---|
| 保留小数计算 | BigDecimal |
| 简单整数 | Math.round |
| 页面展示 | DecimalFormat |
| 金额 | ✅ BigDecimal |
如果你有具体业务场景(比如金额、百分比、科学计算),我可以给你更合适的写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。