有的,Java 里的 Double(即 double 基本类型对应的包装类)是有范围和精度限制的,因为它遵循 IEEE 754 双精度浮点数标准。
double 是 64 位 浮点数,结构如下:
取值范围:
Double.MAX_VALUE ≈ 1.7976931348623157E308Double.MIN_VALUE ≈ 4.9E-324(注意:不是负数最小值)-Double.MAX_VALUE特殊值:
Double.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYDouble.NaN示例:
System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
System.out.println(Double.POSITIVE_INFINITY);
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。
BigDecimalBigDecimaldouble✅ Java 的 Double 有范围
✅ 最大约 1.8e308
✅ 有精度限制(约 15~17 位有效数字)
✅ 不适合精确数值计算
如果你愿意,我也可以帮你对比 float / double / BigDecimal 的使用场景。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。