簡體   English   中英

Swift 將 double 0.1 編碼為 JSON 為 0.10000000000000001

[英]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而不是FloatDouble是要走的路。

如果您在應用程序中使用 Floats 或 Doubles,只需使用例如:

let obj = MyObj(myField: Decimal(myFloat))

然后,當您將 MyObj 序列化為 JSON 時,您應該看到:

{
  "myfield": 0.1
}

而不是 0.10000000000000001

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM