为什么NSDecimalNumber.notANumber.intValue返回9?

时间:2019-01-07 12:20:19

标签: ios swift foundation nsdecimalnumber

我发现我的代码中有一个错误,该错误是由NSDecimalNumber.notANumber.intValue返回9引起的,而我期望NaN(返回floatValuedoubleValue时)。有人知道为什么吗?

enter image description here

1 个答案:

答案 0 :(得分:6)

类似于Joakim Danielson提到并在Apple Developer Documentation

中指出
  

...由于数字类型具有不同的存储功能,因此尝试使用一种类型的值进行初始化并访问另一种类型的值可能会产生错误的结果...

并且由于Swift的Int结构不能表示NaN值,因此您会得到此错误结果。

相反,您可以使用Int的{​​{3}} Failable Initialiser,将您的NSDecimalNumber转换为将包含其值或为Int?的{​​{1}}不能用nil来表示。

Int