iOS 转json浮点型数据丢失精度

旧时模样 提交于 2020-02-27 15:34:39

前几天项目中遇到一个商品价格丢失精度的问题。

服务端返回的价格是number类型;在这里插入图片描述
我用上面的方式,将接受到的二进制数据responseObject转成json发现价格是80.0400000000001;但是安卓同事说他接收到的数据就是80.04。然后我就怀疑是转json的时候,丢失的精度。在这里插入图片描述
索性直接把二进制ut8编码成字符串,发现价格确实是80.04。然后开始查json序列化的时候出现了什么问题。最后也没找到json序列化中间的解决办法,看网上说服务端穿float数据,最好用字符串,number的话就会丢失精度。

最后的处理方式是:
[NSString stringWithFormat:@"%.2f" , [price floatValue]];

通过stringWithFormat:方法保留小数点后两位,这种方式会对小数点后第三位开始四舍五入。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!