开发中处理处理价格金额问题, 后台经常返回float、double类型, 打印或转成NSString都会有精度丢失问题 因此使用系统自带的NSDecimalNumber做处理, 能解决这问题.
错误:
{"price":6.3}
NSLog("%@", price);
price = 6.299999999999
解决方式:
在分类中添加以下代码,将有精度问题的传进去,返回值即解决过的问题
+ (NSString *)reviseString:(NSString *)str{
//直接传入精度丢失有问题的Double类型
double conversionValue = (double)[str doubleValue];
NSString *doubleString = [NSString stringWithFormat:@"%lf", conversionValue];
NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
return [decNumber stringValue];
}