Tips11-解决JSON解析导致数值精度丢失的问题

周五的时候QA测出一个取现操作失败的bug,跟踪了数据走向,发现是由于double类型的数值在转换成JSON字符串的时候精度丢失导致的。

解决方案:使用iOS中的专门用来处理精度的对象NSDecimalNumber

1
2
3
NSString *doubleString = [NSString stringWithFormat:@"%lf", num];
NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
NSString *decimalStr = [decNumber stringValue];

结合到自身项目中,因为这个“钱”是从服务器请求过来,到最后又传回给服务器的,在这个过程中值不会变,所以,可以在拿到服务器的返回值时,先将“钱”利用上述代码转成NSString类型,这样在模型转JSON字符串的时候就不会有double到NSString的转换,从而也避免了精度丢失的问题。