最近在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会出现精度问题,安卓不会有这个问题,苹果的语言果然是超脱于编程大家庭啊啊啊啊。。。。。)
网友评论