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

原文 http://blog.sina.com.cn/s/blog_92aba1430102wakk.html

开发中处理处理数字、价格金额等问题时, 后台经常返回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解析数据精度丢失处理



强烈建议 :
有关浮点型数据,后台传字符串的格式,防止丢失精!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值