Swift 快速负平方根

Swift 快速负平方根,swift,math,error-handling,Swift,Math,Error Handling,在其他语言中也是如此(),但是有人知道为什么不能根据Swift的Double结构中的Double.NaN或Double.quietNaN属性检查负平方根的结果吗 以下是我在操场上运行的一些代码: sqrt(-5.0) // (not a number) Double.NaN // (not a number) Double.quietNaN // (not a number) Double.NaN == sqrt(-5.0) // false Double

在其他语言中也是如此(),但是有人知道为什么不能根据Swift的
Double
结构中的
Double.NaN
Double.quietNaN
属性检查负平方根的结果吗

以下是我在操场上运行的一些代码:

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 playway似乎正在使用相同的错误字符串打印
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

浮点数也有一个
isNaN
属性。

我在谷歌上搜索了“Swift Nan”,找到了这个答案:按照惯例,Nan会将false与任何其他值(包括Nan)进行比较。我不知道Nan会将false与任何其他值进行比较,这很好。我不知道Double符合FloatingPointNumber。。。有点奇怪。谢谢你是说
aNumber!=a编号