温馨提示×

温馨提示×

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

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

java Double 双精度有范围吗

发布时间:2026-10-26 09:35:54 来源:亿速云 阅读:110 作者:小樊 栏目:编程语言

有的,Java 里的 Double(即 double 基本类型对应的包装类)是有范围和精度限制的,因为它遵循 IEEE 754 双精度浮点数标准。

一、Double 的取值范围

double 是 64 位 浮点数,结构如下:

  • 1 位:符号位
  • 11 位:指数位
  • 52 位:尾数位

取值范围:

  • 最大值:Double.MAX_VALUE ≈ 1.7976931348623157E308
  • 最小正非零值:Double.MIN_VALUE ≈ 4.9E-324(注意:不是负数最小值)
  • 负最大值:-Double.MAX_VALUE

特殊值:

  • 正无穷:Double.POSITIVE_INFINITY
  • 负无穷:Double.NEGATIVE_INFINITY
  • 非数字:Double.NaN

示例:

System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
System.out.println(Double.POSITIVE_INFINITY);

二、Double 的精度问题(重点)

double 不是无限精度,它只有 约 15~17 位十进制有效数字。

示例:

double a = 0.1;
double b = 0.2;
System.out.println(a + b); // 0.30000000000000004

这是因为 0.1 在二进制中是无限循环小数,无法精确表示。


三、超出范围会怎样?

double x = 1e309; // 超过 MAX_VALUE
System.out.println(x); // Infinity

不会抛异常,而是变成 Infinity。


四、什么时候不该用 Double?

  • 金额、价格 ✅ 用 BigDecimal
  • 需要精确计算 ✅ 用 BigDecimal
  • 仅做科学计算、图形、统计 ✅ 可用 double

总结

✅ Java 的 Double 有范围
✅ 最大约 1.8e308
✅ 有精度限制(约 15~17 位有效数字)
✅ 不适合精确数值计算

如果你愿意,我也可以帮你对比 float / double / BigDecimal 的使用场景。

向AI问一下细节

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

AI
助
手