在 Java 中,Double(双精度)进行四舍五入有多种方式,下面按常用程度给你总结,并说明适用场景。
BigDecimal(推荐,精度最安全)适合金额、业务计算等对精度要求高的场景。
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Test {
public static void main(String[] args) {
double value = 3.14159;
BigDecimal bd = new BigDecimal(Double.toString(value));
double result = bd.setScale(2, RoundingMode.HALF_UP).doubleValue();
System.out.println(result); // 3.14
}
}
✅ 注意
new BigDecimal(double)(会有精度问题)new BigDecimal(Double.toString(d))Math.round()(简单但不够灵活)适合整数或简单场景。
double a = 3.6;
long b = Math.round(a);
System.out.println(b); // 4
double a = 3.14159;
double result = Math.round(a * 100.0) / 100.0;
System.out.println(result); // 3.14
⚠️ 缺点:
double,可能有浮点误差DecimalFormat(适合展示)适合格式化输出,不是精确计算。
import java.text.DecimalFormat;
public class Test {
public static void main(String[] args) {
double value = 3.14159;
DecimalFormat df = new DecimalFormat("#.00");
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println(df.format(value)); // 3.14
}
}
✅ 输出是字符串
❌ 不适合继续参与计算
DoubleFormatter(较少用)一般不推荐,前三种更常见。
| 方法 | 是否精确 | 适合场景 |
|---|---|---|
BigDecimal |
✅ 最精确 | 金额、业务计算 |
Math.round |
⚠️ 有误差 | 简单计算 |
DecimalFormat |
❌ | 显示、打印 |
✅ 金额 / 重要计算:用
BigDecimal
✅ 简单四舍五入:用Math.round
✅ 只展示:用DecimalFormat
如果你有具体保留几位小数 / 是否用于金额 / 是否要返回 String 或 Double,我可以帮你写最合适的一段代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。