在很多语言里都有,包括 Swift、Python、JavaScript 等。Inf、-inf和nan等属于浮点数(Double / Float)里的特殊值,是为了解决一些数学运算中的“异常情况”而存在的。
1、inf(Infinity,正无穷)
表示值大到无穷,比如除以0的正数、溢出运算等等。
let a = 1.0 / 0.0 // a 是 inf
2、-inf(Negative Infinity,负无穷)
表示值小到负无穷。
let b = -1.0 / 0.0 // b 是 -inf
3、nan(Not a Number)
表示不是一个合法的数字,这个数是“数学上没有意义的结果”。
let c = 0.0 / 0.0 // c 是 nan
4、isFinite
检查是否是有限的普通数值。
5.0.isFinite // true
5、isInfinite
检查是否是无限大或无限小。
Double.infinity // true
6、isNaN
检查是否为Nan。
Double.nan.isNaN // true
在实际的运算中,常常需要考虑被除数是否为0等情况,可以在运算过程中添加判断:
if value.isFinite {
// 安全使用
} else {
print("值是 inf、-inf 或 nan,跳过")
}
以解决inf、nan等情况。
相关文章
SwiftUI Text显示inf问题:https://fangjunyu.com/2025/04/19/swiftui-text%e6%98%be%e7%a4%bainf%e9%97%ae%e9%a2%98/