关于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];

你可能感兴趣的:(关于iOS json解析 数据解析小数丢失精度的问题)