我目前在理解 .isNan 的工作原理方面遇到了问题。
我正在维护一个不是我自己开发的应用程序(在 Swift 2.3 中)。
我们从这段代码中遇到了很多崩溃,据我所知,我不明白这是怎么回事。
这是方法,它只是一个格式化方法,用于通过测试不同的情况为您的标签设置适当的值。
static func formatFloat(float: Float?, withMaxDigits
max: Int, andUnit unit: String) -> String {
var label: String = "-"
if let float = float {
let numberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
numberFormatter.minimumFractionDigits = 0
numberFormatter.maximumFractionDigits = max
numberFormatter.roundingMode = .RoundHalfUp
if !float.isNaN {
var formattedValue = numberFormatter.stringFromNumber(float)!
if(formattedValue == "-0")
{
formattedValue = "0"
}
label = "\(formattedValue) \(unit)"
}
}
return label
}
我说的对吗,它只是检查以确定值是否为 NaN,以便测试所有内容,并相应地设置文本?
我读了一些帖子/文档,但我不明白这一点:
In some languages NaN != NaN, but this isn't the case in Cocoa.
nil 和 NaN 呢?我的意思是 isNan 检查是否正确?
最佳答案
IEEE 浮点规范记录了表示 NaN 无效结果的某些位模式。
nil 不同于 NaN。在 Swift 中,只有可选项可以包含 nil,它表示没有值。
NaN 表示您执行了一些导致无效结果的操作。您应该检查 isNaN
属性以查看数字是否包含 NaN。
编辑:
请注意,有不同的值被标记为 NaN
,因此一个 .NaN
值可能不等于另一个 .NaN
。
关于ios - Swift .isNaN 了解它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41752145/