Swift 负平方根
Swift Negative Square Root
看起来这在其他语言中也是如此 (see thread on C++),但是有谁知道为什么你不能检查负平方根的结果与 Double.NaN
或 Double.quietNaN
Swift 的 Double
结构中的属性?
这是我 运行 在 Playground 中的一些代码:
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
Swift playground 似乎在打印 sqrt(-5.0)
、Double.NaN
和 Double.quietNaN
时使用相同的错误字符串,但它们具有不同的编程表示形式。我不明白为什么会这样。有什么想法吗?
你可以通过检查一个数字是否等价于它本身来检查一个数字是否为 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
属性.
看起来这在其他语言中也是如此 (see thread on C++),但是有谁知道为什么你不能检查负平方根的结果与 Double.NaN
或 Double.quietNaN
Swift 的 Double
结构中的属性?
这是我 运行 在 Playground 中的一些代码:
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
Swift playground 似乎在打印 sqrt(-5.0)
、Double.NaN
和 Double.quietNaN
时使用相同的错误字符串,但它们具有不同的编程表示形式。我不明白为什么会这样。有什么想法吗?
你可以通过检查一个数字是否等价于它本身来检查一个数字是否为 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
属性.