Swift 试图创建一个保护来检查输入是否返回为NaN

Swift 试图创建一个保护来检查输入是否返回为NaN,swift,swift3,decimal,nan,Swift,Swift3,Decimal,Nan,我有一个允许用户输入数字的输入字段(字符串被转换为十进制),但有时它们可能是$an no数字,在这种情况下,我希望使用一个保护并弹出一个UIAlert,让用户知道错误。我读到Swift 3中有一个十进制的isNaN布尔属性,但我不完全确定如何使用它。这就是我正在尝试的 guard myDecimalNumber != isNaN else { print("this is not a number show alert") } isNan是Decimal(和所有浮点)的布

我有一个允许用户输入数字的输入字段(字符串被转换为十进制),但有时它们可能是$an no数字,在这种情况下,我希望使用一个保护并弹出一个UIAlert,让用户知道错误。我读到Swift 3中有一个十进制的isNaN布尔属性,但我不完全确定如何使用它。这就是我正在尝试的

guard myDecimalNumber != isNaN else {
        print("this is not a number show alert")
   }

isNan
Decimal
(和所有浮点)的布尔属性 类型),因此您可以使用

guard !myDecimalNumber.isNaN else {
    // ... `myDecimalNumber` is NaN ...
}
但请注意,从字符串创建
十进制
,将返回 可选,如果转换失败,则为
nil
,那又怎样 您可能需要的是可选绑定:

guard let myDecimalNumber = Decimal(string: textField.text) else {
    // ... `textField.text` does not represent a number ...
}
(同样的方法也适用于其他数字类型,如
Double
Int
,…)

要正确处理本地化的十进制分隔符,请使用 数字格式化程序:

guard let myDecimalNumber = formatter.number(from: textField.text)?.decimalValue else {
    // ... `textField.text` does not represent a number ...
}