zoukankan      html  css  js  c++  java
  • json 解析double类型多出几位小数,利用NSDecimalNumber修复 , 服务器返回的数据,用数据类型接收(int,NSNumber)?

     后台返回float类型数据8.2,实际用AFN的json解析后得到8.1999999999,该怎么处理呢?

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

    处理精度有关的数据先把数据转成double类型 

    此处我是以string方式接收的,直接添加NSString的分类,修正方法贴出来如下:

    +(NSString )reviseString:(NSString )string{
    /* 直接传入精度丢失有问题的Double类型*/
    double conversionValue        = (double)[string floatValue];
    NSString *doubleString        = [NSString stringWithFormat:@"%lf", conversionValue];
    NSDecimalNumber *decNumber    = [NSDecimalNumber decimalNumberWithString:doubleString];
    return [decNumber stringValue];
    }
    这样返回的就是修正过精度的数据了,因为个人需要所以转成了string类型
    

      服务器返回的数据,用数据类型接收(int,NSNumber)?

    NSNumber
    
    字典转模型时,关于数字的赋值的问题和解决办法.
    
    定义模型类时,当要保存字符串时,使用 NSString.
    
    // 当 messageId 为字符串的时候,使用 NSString 接收
    @property (nonatomic,copy) NSString *messageId;
    问题
    
    定义模型类时,当要保存数字时,使用 int.
    注意 : int类型的变量,不能赋值为nil(空对象)或者null(空值),若强行赋值会崩溃.
    // 问题 : 字典转模型时,当给 int类型的 messageId 赋空值时就会崩溃.
    @property (nonatomic,assign) int messageId;
    解决
    
    保存数字除了 int 以外 还有 NSNumber.
    NSNumber 既能保存空值,又能保存数字.
    // 解决 : 使用 NSNumber 既能保存空值,又能保存数字
    @property (nonatomic,strong) NSNumber *messageId;
    
  • 相关阅读:
    [蓝桥杯2019初赛]
    HDU2054
    HDU1175
    POJ3259
    数据结构
    欢迎来测!!!
    jsp页面el取不到值,java片断可以取到
    HTML中table边框的显示总结转载▼
    jquery插件图片延时加载实例详解(转)
    引用CDN内容的方法总结(转)
  • 原文地址:https://www.cnblogs.com/GJ-ios/p/6840027.html
Copyright © 2011-2022 走看看