我目前正面临着了解.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,以便测试所有内容,并相应地设置文本?
我阅读了一些帖子/文件,但我不明白这一点:
在某些语言中,NaN!= NaN,但在Cocoa中并非如此。
nil和NaN怎么样?我是说isNan检查错误对吗?
答案 0 :(得分:2)
IEEE浮点规范记录了表示NaN无效结果的某些位模式。
NaN表示您执行了导致无效结果的某些操作。您应该检查isNaN
属性以查看数字是否包含NaN。
请注意,有不同的值标记为NaN
,因此一个.NaN
值可能不等于另一个.NaN
。
答案 1 :(得分:0)
不,nan
是浮点数可以采用的值。 nil
只能由可选的vars使用。此外,我不确定你的引言在哪里,但.nan == .nan
是假的。有关详细信息,请参阅https://developer.apple.com/reference/swift/floatingpoint