json 解析double类型多出几位小数,利用NSDecimalNumber修复

   后台返回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类型


你可能感兴趣的:(json 解析double类型多出几位小数,利用NSDecimalNumber修复)