后臺返回一個“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---
這樣就不用再擔心相乘后精度丟失了。
如果有更好的方法,歡迎評論區留言