我在代码中发现了一个由 NSDecimalNumber.notANumber.intValue 返回9,我希望 NaN (AS) floatValue 或 doubleValue 返回)。有人知道为什么吗?
NSDecimalNumber.notANumber.intValue
NaN
floatValue
doubleValue
就像约金·丹尼尔森提到的,在 Apple Developer Documentation
…因为数值类型具有不同的存储能力,试图用一种类型的值初始化并访问另一种类型的值可能会产生错误的结果…
自从斯威夫特 Int 结构不能表示NaN值,您会得到这个错误的结果。
Int
相反,你可以使用 int 的 Failable Initialiser init(exactly:) 将nsdecimalNumber转换为 Int? 要么包含它的值,要么 nil 如果它不能由 int .
int
init(exactly:)
Int?
nil
let strangeNumber = NSDecimalNumber.notANumber // nan let integerRepresentation = Int(exactly: strangeNumber) // nil