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---

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容