gpt4 book ai didi

swift - 使 NSDecimalNumber 可编码

转载 作者:IT王子 更新时间:2023-10-29 05:48:30 26 4
gpt4 key购买 nike

是否可以扩展 NSDecimalNumber 以符合 Encodable 和 Decodable 协议(protocol)?

最佳答案

不可能扩展 NSDecimalNumber 以符合 EncodableDecodable 协议(protocol)。 Jordan Rose 在下面解释了它 swift evolution email thread .

如果您需要在 API 中输入 NSDecimalValue,您可以围绕 Decimal 构建计算属性。

struct YourType: Codable {
var decimalNumber: NSDecimalNumber {
get { return NSDecimalNumber(decimal: decimalValue) }
set { decimalValue = newValue.decimalValue }
}
private var decimalValue: Decimal
}

顺便说一句。如果您使用 NSNumberFormatter 进行解析,请注意 known bug这在某些情况下会导致精度损失。

let f = NumberFormatter()
f.generatesDecimalNumbers = true
f.locale = Locale(identifier: "en_US_POSIX")
let z = f.number(from: "8.3")!
// z.decimalValue._exponent is not -1
// z.decimalValue._mantissa is not (83, 0, 0, 0, 0, 0, 0, 0)

改为以这种方式解析字符串:

NSDecimalNumber(string: "8.3", locale: Locale(identifier: "en_US_POSIX"))

关于swift - 使 NSDecimalNumber 可编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46294765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com