ios 丢失精度的问题

开发中处理处理数字、价格金额等问题时, 后台经常返回float类型, 打印或转成NSString都会有精度丢失问题, 因此使用系统自带的NSDecimalNumber做处理, 能解决这问题:

经过测试其实系统NSDecimalNumber是对有问题值做了四舍五入
处理处理精度有关的数据请用double


下面是后台请求拿到的数据:

{
            "cal_date" = "2016-08-04";
            fee = 0;
            "fund_code" = 020007;
            "min_subscript" = 100;
            nav = "2.654";
            "purchase_status" = 1;
            "rate_growth" = "0.7665999999999999"; //此处数据有问题,后台给的是0.7666
            "redemp_status" = 1;
            risklevel = 0;
},



方法处理 :

    float testDouble = [listModel.rate_growth floatValue];
    NSString *doubleString = [NSString stringWithFormat:@"%lf", testDouble];
    NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
    NSLog(@"%@", [decNumber stringValue]);



打印结果
0.7666


数据显示先后对比:
iOS <wbr>- <wbr>Json解析数据精度丢失处理

iOS <wbr>- <wbr>Json解析数据精度丢失处理



强烈建议 :
有关浮点型数据,后台传字符串的格式,防止丢失精!
原文地址:https://www.cnblogs.com/guchengfengyun/p/8349615.html