如何以长格式对 Double 进行编码

hap497

我使用以下方法Double从字符串创建一个

let doubleValue = Double(value)

value23450000000000000000

在调试器中我看到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)

我通过查看Yervand 对这篇相关帖子的回答而发现的

如果您尝试更大的数字,例如“ 234500000000000000000000”(其中有几个额外的零),那么您将看到这样做的价值NSDecimalRound

如果您只是想在 lldb 中打印出您的 doubleValue,请尝试po String(format: "%.0f", doubleValue)doubleValue定义的断点处进行操作,您应该有不错的运气。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章