gpt4 book ai didi

objective-c - NSJSONSerialization.JSONObjectWithData 浮点转换/舍入错误?

转载 作者:数据小太阳 更新时间:2023-10-29 07:53:21 24 4
gpt4 key购买 nike

我的简单 RubyMotion 代码:

data = DataParser.parse(url)
error_ptr = Pointer.new(:object)
json = NSJSONSerialization.JSONObjectWithData(data, options: 0, error: error_ptr)

该 url 是一个天气 API,它提供一个带有温度的 JSON 作为 float ,如 { "temp_c":22.4, ... }。奇怪的是, float 22.4 被转换为 22.3999938964844

如果我检查 data.to_s,温度读数为 22.4,所以我假设错误在 NSJSONSerialization.JSONObjectWithData 中。

  • 谁能证实这一点?
  • 是否有通用的解决方案?

我不想强制舍入所有 float 。

最佳答案

十进制数“22.4”不能用二进制 float 精确表示,例如floatdouble .所以“将 float 舍入到 22.4” 没有意义,因为没有完全等于 22.4 的 float 。

如果将 float 转换为十进制字符串输出,则只能指定精度。您可以使用 NSNumberFormatter或类似 "%.<precision>f 的 printf 格式.

关于objective-c - NSJSONSerialization.JSONObjectWithData 浮点转换/舍入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15569806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com