精度丢失

开发中处理处理价格金额问题, 后台经常返回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];
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容