double.isinfinite用于判断double值是否为±∞,仅对无穷大返回true,对nan和有限数(含0.0)返回false,内部通过值比较实现,需与double.isnan配合使用以区分三类特殊浮点值。

Double.isInfinite 是 Java 中用于判断一个 double 值是否为正无穷大(Double.POSITIVE_INFINITY)或负无穷大(Double.NEGATIVE_INFINITY)的静态方法。它**只对无穷大返回 true,对 NaN、有限数(包括 0.0)都返回 false。
判断逻辑很直接
该方法内部等价于:value == Double.POSITIVE_INFINITY || value == Double.NEGATIVE_INFINITY
也就是说,它不依赖符号位或位模式解析,而是用精确的值比较——这是安全且符合 IEEE 754 规范的做法。
常见使用场景
- 检查数学运算结果是否溢出,比如
1.0 / 0.0得到Infinity,-1.0 / 0.0得到-Infinity - 在数值计算前过滤异常值,避免后续计算被污染(如累加、平均、归一化)
- 和
Double.isNaN()配合使用,完整区分三类特殊浮点值:NaN、±∞、正常数
注意和 NaN 的区别
Double.isInfinite(d) 对 Double.NaN 返回 false。NaN 和无穷大是两类独立的特殊值:
– Double.isNaN(1.0 / 0.0) → false(因为结果是 ∞,不是 NaN)
– Double.isInfinite(0.0 / 0.0) → false(因为结果是 NaN)
所以判断“是否有效数值”时,通常要同时排除 NaN 和无穷大:
不能用于 float 类型
Double.isInfinite 只接受 double 参数。如果手头是 float,需先转成 double 或改用 Float.isInfinite(f) —— 两者语义一致,但类型不同,不可混用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











