精度丢失

2023-01-17  本文已影响0人  羽化行云

开发中处理处理价格金额问题, 后台经常返回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];
}
上一篇 下一篇

猜你喜欢

热点阅读