我使用以下方法Double
从字符串创建一个:
let doubleValue = Double(value)
的value
是23450000000000000000
在调试器中我看到doubleValue
显示为2.345e+20
我的代码有一个编码器(到编码器:编码器)来对 doubleValue 进行编码。
try container.encode(doubleValue, forKey: .akey)
当我运行它时,我看到doubleValue
被编码为2.345e+20
. 有没有办法以doubleValue
长格式编码?即23450000000000000000
?
首先,您想像 a 一样打印出来的数字long
对于 a UInt64
(最大值是print(UInt64.max) // 2^64 = 18446744073709551615
)来说太大了。
如果您真的想打印出大值,请尝试使用Decimal
类型。这是一些对我有用的代码:
import UIKit
var str = "Hello, playground"
let doubleValue = Double(23450000000000000000)
Swift.print("hello")
Swift.print(doubleValue)
Swift.print(String(format: "%.0f", doubleValue))
var decimalValue = NSNumber(value: doubleValue).decimalValue
var result = Decimal()
NSDecimalRound(&result, &decimalValue, 0, .plain)
Swift.print(result)
如果您尝试更大的数字,例如“ 234500000000000000000000
”(其中有几个额外的零),那么您将看到这样做的价值NSDecimalRound
。
如果您只是想在 lldb 中打印出您的 doubleValue,请尝试po String(format: "%.0f", doubleValue)
在doubleValue
定义的断点处进行操作,您应该有不错的运气。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句