iOS数据解析精度丢失

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

处理后数据
 有关数据精度丢失问题,建议和后台商议规定以字符串的格式来进行传输,防止丢失精度
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容