java中float和double封装类提供静态常量获取浮点极值与无穷大:float.positive_infinity、negative_infinity、max_value、min_normal;double同理但范围更大;判断无穷大应使用isinfinite()而非==比较。

Java 中的 Float 和 Double 封装类提供了静态常量,可直接获取浮点数类型的正无穷大、负无穷大以及有限值的最大最小范围,无需手动计算或构造。
使用 Float 类获取 float 类型的极值与无穷大
Float 类定义了四个关键静态常量:
-
Float.POSITIVE_INFINITY:表示正无穷大(
1.0f / 0.0f的结果) -
Float.NEGATIVE_INFINITY:表示负无穷大(
-1.0f / 0.0f的结果) -
Float.MAX_VALUE:最大的有限正 float 值(约
3.4028235e38) -
Float.MIN_NORMAL:最小的正规化正 float 值(约
1.17549435e-38);注意:Float.MIN_VALUE实际是最小正非零值(含非正规化数,约1.4e-45),不是“最小负值”
示例:
System.out.println(Float.POSITIVE_INFINITY); // InfinitySystem.out.println(Float.NEGATIVE_INFINITY); // -Infinity
System.out.println(Float.MAX_VALUE); // 3.4028235E38
System.out.println(Float.MIN_NORMAL); // 1.17549435E-38
使用 Double 类获取 double 类型的极值与无穷大
Double 类对应提供相同语义的常量,精度和范围更大:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- Double.POSITIVE_INFINITY:正无穷大
- Double.NEGATIVE_INFINITY:负无穷大
-
Double.MAX_VALUE:最大有限正 double 值(约
1.7976931348623157e308) -
Double.MIN_NORMAL:最小正规化正 double 值(约
2.2250738585072014e-308);同理,Double.MIN_VALUE是最小正非零值(约4.9e-324)
示例:
System.out.println(Double.POSITIVE_INFINITY); // InfinitySystem.out.println(Double.MAX_VALUE); // 1.7976931348623157E308
System.out.println(Double.MIN_NORMAL); // 2.2250738585072014E-308
判断一个浮点数是否为无穷大
不要用 == 直接比较无穷大(虽在多数情况下有效,但不推荐),应使用封装类提供的静态方法:
-
Float.isInfinite(float f):返回 true 当且仅当 f 为
POSITIVE_INFINITY或NEGATIVE_INFINITY - Double.isInfinite(double d):同上,用于 double
- 也可配合
Float.isNaN()/Double.isNaN()区分无穷大与 NaN
示例:
float f = 1.0f / 0.0f;System.out.println(Float.isInfinite(f)); // true
System.out.println(Float.isNaN(f)); // false
实际应用中的注意事项
这些常量在边界处理、算法初始化、数值校验中非常实用:
- 初始化查找最大值/最小值时,可用
Float.NEGATIVE_INFINITY/Float.POSITIVE_INFINITY作哨兵值 - 做数值范围检查时,应优先用
isInfinite()而非与常量比较,避免因精度或表达式求值顺序引入隐患 -
MAX_VALUE和MIN_NORMAL不代表类型全部可表示范围的上下界(如还包括非正规化数、零、NaN),需按语义选用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










