关于iOS json解析 数据解析小数丢失精度的问题

//出现BUG的条件是两位数或者一位数,且带两位小数,类型还必须是float//两位数:十位必须是7、8、9;个位数随意,一位数的个位数也必须是789//两位小数:第一位数随意;第二位数必须是0(网上的解释的规律好像不对,如下:)

8.55
8.37

目前只有SBJson可以正常解析(SBJson5不行),但性能有问题

 // json 解析小数,会出现精度异常
// 正常 dict[@"name"] 应该是8.55,但这样解析出值为 8.550000001
 NSString *str = @"{\"name\" : 8.55}";
//NSString *str = @"{\"name\" : 8.37}";
 NSDictionary *dict= [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
 NSLog(@"dict>> %@",dict);
 NSLog(@"dict SBJson>> %@",[str JSONValue]);

使用model解析,且定义为float(double 不行),千万不要用NSString,NSNumber ,直接解析model,可以

  @property (nonatomic, assign) float name;

或者直接取值 float 不要用CGFloat

float name = [dict[@"name"]floatValue];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容