开发中处理处理数字、价格金额等问题时, 后台经常返回float类型, 打印或转成NSString都会有精度丢失问题, 因此使用系统自带的NSDecimalNumber做处理, 能解决这问题:
下面是后台请求拿到的数据:
tianheCardDic = {
discount = "9.949999999999999"; //明明是9.95
"oc_discount_rate" = 95;
"oc_discount_rate_format" = "9.5";
"th_price" = "189.05";
};
方法处理 :
NSString *doubleString = [NSString stringWithFormat:@"%.2lf", [tianheCardDic[@"discount"] doubleValue]];
NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
NSLog(@"%@", [decNumber stringValue]);
打印结果:
9.95