[英]Swift encodes double 0.1 to JSON as 0.10000000000000001
在使用 0.1 值初始化雙變量並通過 SwiftyJSON 將其編碼為 JSON 后,我在 JSON 結構中收到 0.10000000000000001。
我知道 float/double 和 integer 之間的精確內存存儲差異,但除了使用 sprintf 格式(如 %.2f)之外,我仍然沒有找到針對這種情況的快速解決方案 - 我不想將字符串放入 json 中結構體。
任何快速簡便的解決方案將不勝感激。
我希望在 JSON 中有 0.1 值。 如果雙精度值為 10,我期望 JSON 中的值為 10。 但是如何在 json 編碼操作期間避免這種精度舍入錯誤呢?
聚會遲到但對於其他有同樣問題的人 - 將您的字段定義為Decimal
而不是Float
或Double
是要走的路。
如果您在應用程序中使用 Floats 或 Doubles,只需使用例如:
let obj = MyObj(myField: Decimal(myFloat))
然后,當您將 MyObj 序列化為 JSON 時,您應該看到:
{
"myfield": 0.1
}
而不是 0.10000000000000001
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.