在将一个双精度变量初始化为0.1值并通过SwiftyJSON将其编码为JSON之后,我收到了JSON结构中的0.10000000000000001。
我知道浮点数/双精度数和整数之间的精确内存存储差异,但是除了使用%.2f之类的sprintf格式外,我仍然没有找到针对这种情况的快速解决方案-我不想将结果放在字符串转换成json结构。
任何快速,简便的解决方案将不胜感激。
我希望JSON中的值为0.1。 如果double值为10,则我希望JSON中的值为10。 但是如何避免在json编码操作期间出现这种精度舍入错误?
答案 0 :(得分:1)
聚会迟到但对于其他有同样问题的人 - 将您的字段定义为 Decimal
而不是 Float
或 Double
是要走的路。
如果您在应用中使用 Floats 或 Doubles,只需使用例如:
let obj = MyObj(myField: Decimal(myFloat))
然后当您将 MyObj 序列化为 JSON 时,您应该看到:
{
"myfield": 0.1
}
而不是 0.10000000000000001