【发布时间】:2019-11-09 03:42:17
【问题描述】:
在使用 0.1 值初始化双变量并通过 SwiftyJSON 将其编码为 JSON 后,我在 JSON 结构中收到 0.10000000000000001。
我知道浮点/双精度和整数之间的精确内存存储差异,但除了使用 %.2f 之类的 sprintf 格式外,我仍然没有找到解决这种情况的快速解决方案 - 我不想导致字符串转换成 json 结构。
我们将不胜感激任何快速简便的解决方案。
我希望 JSON 中有 0.1 的值。 如果双精度值为 10,我期望 JSON 中的值为 10。 但是在json编码操作过程中如何避免这样的精度舍入误差呢?
【问题讨论】:
-
0.10000000000000001 是 0.1。这样做的不是 Swift,而是两个数字相同的事实。
-
我已经意识到这一点,我明白从计算的角度来看确实是一样的。但由于视觉方式,我仍然想避免这种情况。两个平台(iOS 和 Android)都将 0.1 值保存到 JSON 中。但实际上,Android 节省了 0.1,而 iOS 节省了 0.10000000000000001。我想消除这种区别
-
这是浮点数,它们就是这样工作的。如果需要,您可以随时将该数字截断为特定数字。
-
截断在这里对我没有帮助。看到这个:stackoverflow.com/questions/35946499/…
-
如何将其格式化并存储为字符串?
标签: json swift type-conversion precision swifty-json