Rob*_*ert 3 ruby json rounding-error objective-c rubymotion
我简单的RubyMotion代码:
data = DataParser.parse(url)
error_ptr = Pointer.new(:object)
json = NSJSONSerialization.JSONObjectWithData(data, options: 0, error: error_ptr)
Run Code Online (Sandbox Code Playgroud)
url是一个天气API,提供JSON温度如浮点数{ "temp_c":22.4, ... }.奇怪的是,浮动22.4转换为22.3999938964844.
如果我检查data.to_s温度读数22.4,那么我认为错误在于NSJSONSerialization.JSONObjectWithData.
我不想强迫所有花车四舍五入.
十进制数"22.4" 不能用二进制浮点数精确表示,例如float或double.所以"将浮点数舍入到22.4"没有意义,因为没有浮点数恰好等于22.4.
如果将浮点数转换为输出的十进制字符串,则只能指定精度.您可以使用a NSNumberFormatter或printf格式"%.<precision>f.
| 归档时间: |
|
| 查看次数: |
1098 次 |
| 最近记录: |