我们做网络获取的时候,一般后台会返回给我们json格式的文件,我们获取到的信息也是字符串,但是返回的字符串分明是1.459999999,而在谷歌浏览器测试的时候返回的却是1.46,这个问题百思不得其解,经过查阅资料发现这个精度丢失的问题,在后台返回float或者double或者NSString类型时,利用NSDecimalNumber处理精度丢失问题,但是NSNumber的description方法不够严谨,在调用NSNumber的description方法打印数值时,会发生精度损失。如果是double类型,建议把NSNumber转换成double再进行输出或计算。
+(NSString *)reviseString: (NSString *)str
{
//直接传入精度丢失有问题的Double类型
double conversionValue = [str doubleValue];
NSString *doubleString = [NSString stringWithFormat:@"%lf", conversionValue];
NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
return [decNumber stringValue];
}