isnan() 的 Swift 等价物是啥?

Posted

技术标签:

【中文标题】isnan() 的 Swift 等价物是啥?【英文标题】:Which is the Swift equivalent of isnan()?isnan() 的 Swift 等价物是什么? 【发布时间】:2014-08-12 15:13:51 【问题描述】:

哪个相当于 Swift 中的 isnan() ? 我需要检查一些操作结果是否有效,并删除那些无效的,比如 x/0 谢谢

【问题讨论】:

除以0.0的结果不是.nan而是.inf 【参考方案1】:

它在FloatingPointNumber 协议中定义,Float 和Double 类型都符合该协议。用法如下:

let d = 3.0
let isNan = d.isNaN // False

let d = Double.NaN
let isNan = d.isNaN // True

如果您正在寻找自己进行此项检查的方法,您可以。 IEEE 定义 NaN != NaN,这意味着您不能直接将 NaN 与数字进行比较以确定它的 is-a-number-ness。但是,您可以检查 maybeNaN != maybeNaN。如果此条件评估为真,则您正在处理 NaN。

虽然您应该更喜欢使用 aVariable.isNaN 来确定值是否为 NaN。


附带说明一下,如果您对正在使用的值的分类不太确定,可以切换 FloatingPointNumber 符合类型的 floatingPointClass 属性的值。

let noClueWhatThisIs: Double = // ...

switch noClueWhatThisIs.floatingPointClass 
case .SignalingNaN:
    print(FloatingPointClassification.SignalingNaN)
case .QuietNaN:
    print(FloatingPointClassification.QuietNaN)
case .NegativeInfinity:
    print(FloatingPointClassification.NegativeInfinity)
case .NegativeNormal:
    print(FloatingPointClassification.NegativeNormal)
case .NegativeSubnormal:
    print(FloatingPointClassification.NegativeSubnormal)
case .NegativeZero:
    print(FloatingPointClassification.NegativeZero)
case .PositiveZero:
    print(FloatingPointClassification.PositiveZero)
case .PositiveSubnormal:
    print(FloatingPointClassification.PositiveSubnormal)
case .PositiveNormal:
    print(FloatingPointClassification.PositiveNormal)
case .PositiveInfinity:
    print(FloatingPointClassification.PositiveInfinity)

它的值在FloatingPointClassification 枚举中声明。

【讨论】:

【参考方案2】:

接受的答案有效,但当我第一次看到它时,由于这个例子,我并不太清楚,而且我不知道 NaN 是 "not a number" 的首字母缩写词。

这里有一个来自 Apple 的示例,供不清楚的人参考:

let x = 0.0
let y = x * .infinity // y is a NaN because .infinity is not a number

if y.isNan 

    print("this is NaN") // this will print
 else 

    print("this isn't Nan")

【讨论】:

以上是关于isnan() 的 Swift 等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

NSURL.URLByAppendingPathComponent() 的 Swift 3 等价物是啥?

iOS Swift 中的 firebase 实时数据库推送等价物是啥?

Flow 中星号 (*) 类型的用途是啥,TypeScript 中的等价物是啥?

Oracle 中 varchar(max) 的等价物是啥?

PowerShell 中的 xargs 等价物是啥?

函数中静态变量的 Python 等价物是啥?