温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Double 双精度怎么进行四舍五入

发布时间:2026-07-25 02:47:46 来源:亿速云 阅读:104 作者:小樊 栏目:编程语言

在 Java 中,Double(双精度)进行四舍五入有多种方式,下面按常用程度给你总结,并说明适用场景。


✅ 一、最常用:BigDecimal(推荐,精度最安全)

适合金额、业务计算等对精度要求高的场景。

示例:保留 2 位小数并四舍五入

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

示例:保留 N 位小数(技巧性写法)

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
    }
}

✅ 输出是字符串
❌ 不适合继续参与计算


✅ 四、Java 8+ DoubleFormatter(较少用)

一般不推荐,前三种更常见。


✅ 总结对比

方法 是否精确 适合场景
BigDecimal ✅ 最精确 金额、业务计算
Math.round ⚠️ 有误差 简单计算
DecimalFormat 显示、打印

✅ 推荐结论

金额 / 重要计算:用 BigDecimal
简单四舍五入:用 Math.round
只展示:用 DecimalFormat

如果你有具体保留几位小数 / 是否用于金额 / 是否要返回 String 或 Double,我可以帮你写最合适的一段代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI