【发布时间】:2020-09-29 01:16:10
【问题描述】:
我使用以下字符串从字符串创建Double:
let doubleValue = Double(value)
value 是 23450000000000000000
在调试器中我看到doubleValue 显示为2.345e+20
我的代码有一个编码器(到编码器:编码器)来编码双值。
try container.encode(doubleValue, forKey: .akey)
当我运行它时,我看到doubleValue 被编码为2.345e+20。
有没有办法以长格式编码doubleValue?即23450000000000000000?
【问题讨论】:
-
它有什么不同? (可能是 XY 问题)
-
请注意,
Double不适合用于如此大的数字。你会失去精度。对于如此大的数字,甚至像UInt64这样的无符号数字就足够了。您需要使用Decimal类型并确保使用字符串初始值设定项。 -
另外,在编码/解码十进制类型时,您需要创建自己的编码和解码方法以保留其值stackoverflow.com/a/62997953/2303865
标签: swift