iOS数据解析精度丢失

2019-09-30  本文已影响0人  HF_K

开发中遇到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

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

猜你喜欢

热点阅读