美文网首页
iOS数据解析精度丢失

iOS数据解析精度丢失

作者: HF_K | 来源:发表于2019-09-30 09:48 被阅读0次

    开发中遇到Json解析后数据中涉及数字的会存在部分失去了原有精度。因为后台返回的数据不是字符串类型NSString,而是double或者float,打印或者转成NSString时就会出现精度丢失,因此我们需要对这些数据进行处理。

    原始数据 打印数据
    90.49 90.48999999999999
    90.99 90.98999999999999
    99.79 99.79000000000001
    99.99 99.98999999999999
    9012.19 9012.190000000001
    处理前数据

    处理方法

    这里我们要用到系统自带的NSDecimalNumber来对数据进行处理,这里我们采用接收NSString的方式

    /**
    修正数据精度丢失
    @param original 传入接口取到的数据
    @return 修正精度后的数据
    **/
    +(NSString *)getReviseNumberData:(NSString *)original{
        double originalValue = [original doubleValue];
        NSString *revisetring = [NSString stringWithFormat:@"%lf", originalValue];
        NSDecimalNumber *result = [NSDecimalNumber decimalNumberWithString:revisetring];
        return [result stringValue];
    }
    

    注意:处理精度相关问题是用double

    处理后数据
     有关数据精度丢失问题,建议和后台商议规定以字符串的格式来进行传输,防止丢失精度

    相关文章

      网友评论

          本文标题:iOS数据解析精度丢失

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