Swift负平方根

时间:2015-04-07 00:17:10

标签: swift math error-handling

在其他语言中看起来也是如此(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,但它们具有不同的编程表示。我无法弄清楚为什么会这样。有什么想法吗?

1 个答案:

答案 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属性。