iOS JSONi解析浮点型数值精度问题

最近在IOS开发时发现一个JSON解析奇葩问题,会出现一定概率的错误

如下:

  • 出现BUG的条件必须是两位数,且带两位小数,类型还必须是float
  • 两位数:十位必须是7、8、9;个位数随意
  • 两位小数:个位数随意;十位数必须是0
NSString *jsonStr = @"{\"71.40\":71.40, \"8.37\":8.37, \"80.40\":80.40, \"188.40\":188.40}";
NSLog(@"json:%@", jsonStr);
NSData *jsonData_ = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSError *jsonParsingError_ = nil;
NSDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:[NSJSONSerialization JSONObjectWithData:jsonData_ options:0 error:&jsonParsingError_]];
NSLog(@"dic:%@", dic);
  • 输出结果
/*结果:dic:{
"188.40" = "188.4";
"71.40" = "71.40000000000001";
"80.40" = "80.40000000000001";
"**8.37**" = "**8.369999999999999**";
}*/
建议
  • 有关浮点型数据,建议后台传字符串的格式,防止丢失精度。
  • 或者使用double类型
    (比较恶心的是,iOS会出现精度问题,安卓不会有这个问题,苹果的语言果然是超脱于编程大家庭啊啊啊啊。。。。。)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容