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 实时数据库推送等价物是啥?