温馨提示×

温馨提示×

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

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

Java Double 双精度怎么转整数

发布时间:2026-07-25 01:21:45 来源:亿速云 阅读:99 作者:小樊 栏目:编程语言

在 Java 中,Double(双精度浮点数)转整数有几种常见方式,区别在于是否四舍五入、是否抛异常、是否溢出。下面按使用场景给你总结一下。


1️⃣ 强制类型转换(直接截断小数)

不推荐用于金额、精度要求高的场景

Double d = 3.99;
int i = (int)(double)d;
System.out.println(i); // 3

✅ 特点:

  • 直接丢弃小数部分(向 0 取整)
  • 不四舍五入
  • 可能溢出(Double 范围远大于 int)

2️⃣ 使用 Math.round()(最常用 ✅)

推荐:四舍五入

Double d = 3.6;
long l = Math.round(d);   // 返回 long
int i = (int) l;          // 如需 int 再强转

✅ 特点:

  • 四舍五入
  • 返回 long
  • 适合大多数业务场景

⚠ 注意:

Double d = 1e20;
int i = (int) Math.round(d); // 溢出,结果错误

3️⃣ 使用 intValue() / longValue()(不推荐)

Double d = 3.9;
int i = d.intValue(); // 实际是 (int)(double)d

❌ 本质还是强制转换 ❌ 不支持四舍五入


4️⃣ 使用 BigDecimal(金额、高精度 ✅✅)

金融、金额计算强烈推荐

Double d = 3.785;
int i = new BigDecimal(d.toString())
        .setScale(0, RoundingMode.HALF_UP)
        .intValue();

✅ 特点:

  • 精确控制舍入方式
  • 避免浮点误差
  • 可指定小数位数

常见舍入模式:

  • HALF_UP:四舍五入(常用)
  • DOWN:直接截断
  • UP:只要有小数就进一

5️⃣ 转成 long 还是 int

场景 建议
普通计算 Math.round()long
范围小 (int) Math.round()
金额 BigDecimal
不关心小数 强制转换

✅ 总结推荐

// 普通场景
int i = (int) Math.round(d);

// 金额 / 精确计算
BigDecimal bd = new BigDecimal(d.toString());
int i = bd.setScale(0, RoundingMode.HALF_UP).intValue();

如果你有具体场景(比如金额、分页、数组下标、时间戳),我可以帮你选最合适的写法。

向AI问一下细节

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

AI