关于高精度数据精度丢失

double money = 9.04;
    
    NSNumber *moneyNum = [NSNumber numberWithDouble:money];
    
    NSLog(@"moneyNum:%@",moneyNum); //此时输出9.039999999999999;
    
      //使用NSDecimalNumber
    
    moneyNum = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%f",money]];
    
    NSLog(@"NSDecimalNumber:%@",moneyNum);  //此时输出9.04

使用系统提供的NSDecimalNumber来处理,可以避免精度丢失。

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

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,197评论 19赞 139
  • 前言 在日常的开发中我们随时都会跟数字打着交道,对数字的处理也是很平常的事,本文仅对常用的数字操作一个小结,当一个...
    進无尽阅读 1,471评论 0赞 2
  • floata =0.01;intb =99999999;doublec =0.0;c = a*b;NSLog(@"...
    Lv明阅读 1,149评论 0赞 0
  • 今天晚上我和朋友,高高兴兴的去公园骑单车。骑到公园的一半,看见了一座桥。我很好奇地问哥哥。这里怎么会有一座...
    LXY李星毅阅读 247评论 0赞 2
  • 西湖·印记 一 那天 没有烟雨 阳光带着甜腻的花香散播 招来了乡间的蜜蜂 盘旋在城市的上空 我的心快要贴近一湖水 ...
    葱葱_阅读 592评论 9赞 6

友情链接更多精彩内容