美文网首页
iOS JSONi解析浮点型数值精度问题

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

作者: 白屏 | 来源:发表于2016-06-30 21:43 被阅读1173次

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

    相关文章

      网友评论

          本文标题:iOS JSONi解析浮点型数值精度问题

          本文链接:https://www.haomeiwen.com/subject/lsdfjttx.html