NSString转Double, 精度丢失处理

后台返回一个“17.9”金额的值,通常方法,“17.9”.doubleValue后,结果变成了17.899999,乘以100后,竟然得出1789,实际应该是1790。

iOS提供的保留精度的方法是使用NSDecimalNumber。这可以完美解决问题。

如上例:

NSString *numb = @"17.9";//模拟后台返回的数据
    
NSDecimalNumber *restMoney = [NSDecimalNumber decimalNumberWithString:numb];

//那么如果要完成乘以100的处理呢?

NSDecimalNumber *restMoneyMultiply = [restMoney decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:@"100"]];
    
NSLog(@"----%@---",restMoneyMultiply);

打印结果:
2021-12-01 10:08:23.450901+0800 Decimal[3999:77442] ----1790---

这样就不用再担心相乘后精度丢失了。

如果有更好的方法,欢迎评论区留言

你可能感兴趣的:(NSString转Double, 精度丢失处理)