迅捷负平方根

恩典

看起来在其他语言中也是如此(请参阅C ++上的线程),但是没有人知道为什么您无法对照Swift的struct中的Double.NaNorDouble.quietNaN属性检查负平方根的结果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游乐场正在打印sqrt(-5.0)Double.NaN并且Double.quietNaN带有相同的错误字符串,但是它们具有不同的程序表示形式。我不知道为什么会这样。有什么想法吗?

姆拉苗

您可以通过检查数字是否等于NaN来检查其是否为NaN:

if aNumber != aNumber {
  println("This is NaN")
}

NaN 总是不等于自己。

或者,您可以使用isNaNDouble数字属性:

let number: Double = 5.0
let nanNumber: Double = Double.NaN

number.isNaN  // false
nanNumber.isNaN  // true

浮点数也有一个isNaN属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章