在其他语言中看起来也是如此(see thread on C++),但有人知道为什么你无法检查Double.NaN
或{的负平方根的结果Swift的Double.quietNaN
结构中的{1}}属性?
以下是我在Playground中运行的一些代码:
Double
似乎Swift游乐场正在使用相同的错误字符串打印sqrt(-5.0) // (not a number)
Double.NaN // (not a number)
Double.quietNaN // (not a number)
Double.NaN == sqrt(-5.0) // false
Double.quietNaN == sqrt(-5.0) // false
,sqrt(-5.0)
和Double.NaN
,但它们具有不同的编程表示。我无法弄清楚为什么会这样。有什么想法吗?
答案 0 :(得分:1)
您可以通过检查数字是否等于自身来检查数字是否为NaN:
if aNumber != aNumber {
println("This is NaN")
}
NaN
总是不等于自己。
或者您可以使用双号的isNaN
属性:
let number: Double = 5.0
let nanNumber: Double = Double.NaN
number.isNaN // false
nanNumber.isNaN // true
Float 号码也有isNaN
属性。