ios - Swift .isNaN 了解它是如何工作的

标签 ios swift

我目前在理解 .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/

相关文章:

ios - iOS 中导航栏下的选项卡

ios - 在第二个 View Controller 上展开 Segue 错误

ios - 不知道这个 xcode 错误是什么意思?

swift - 让可拖动的 UIImage 移回原点位置

ios - mkmapview 在指定帧中显示路线和注释

ios - 是否可以使用预先填充的加密 Realm 文件而不明确说明 key ?

ios - UITableViewCell 3 选择的时间更改多个选择的背景颜色

ios - 后台播种/加载 iOS 核心数据存储

ios - AVFoundation 将第一帧添加到视频

ios - inputAccessoryView 的 Swift 问题