博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS中货币高精度要求使用NSDecialNumber、
阅读量:5068 次
发布时间:2019-06-12

本文共 1215 字,大约阅读时间需要 4 分钟。

    float a = 0.01;

    
    int b =99999999;
    
    double c = 0.0;
    
    c = a * b;
    

//如果单纯的使用double会导致数据不是特别的精准、但是对于做金融的来说、又要求精度比较高、所以可以使用字符串的形式来解决这个问题

    NSLog(@"%f",c);
    
    NSLog(@"%.2f",c);
    
    c = a*(double)b;
    
    NSLog(@"%f",c);
    
    NSLog(@"%.2f",c);
    
    
    NSString *objA = [NSString stringWithFormat:@"%.2f",a];
    
    NSString *objB = [NSString stringWithFormat:@"%.2f",(double)b];
    
    c = [objA doubleValue]* [objB doubleValue];
    //使用字符串可以解决这个问题、
    NSLog(@"%.2f",c);

 

同样、使用系统的NSDecialNumber也是可以实现的、如果数据比较多、最好使用系统的框架、

    
    NSDecimalNumber *num1 = [NSDecimalNumber decimalNumberWithString:objB];
    
    NSLog(@"%@",num1);
    
    NSDecimalNumber *num2 = [NSDecimalNumber decimalNumberWithString:objA];
    
    NSLog(@"%@",num2);
    
    c = [num1 doubleValue] * [num2 doubleValue];
    
    NSLog(@"%.2f",c);

 

 

2015-11-09 11:24:33.660 NSDecimal[1583:75337] 1000000.000000

2015-11-09 11:24:33.661 NSDecimal[1583:75337] 1000000.00
2015-11-09 11:24:33.661 NSDecimal[1583:75337] 999999.967648
2015-11-09 11:24:33.661 NSDecimal[1583:75337] 999999.97
2015-11-09 11:24:33.662 NSDecimal[1583:75337] 999999.99
2015-11-09 11:24:33.662 NSDecimal[1583:75337] 99999999
2015-11-09 11:24:33.662 NSDecimal[1583:75337] 0.01
2015-11-09 11:24:33.662 NSDecimal[1583:75337] 999999.99

转载于:https://www.cnblogs.com/er-dai-ma-nong/p/4949465.html

你可能感兴趣的文章
一个经典的比喻( 关于TCP连接API )
查看>>
scrapy爬取58同城二手房问题与对策
查看>>
索引查找Java实现
查看>>
高效程序员的45个习惯 敏捷开发修炼之道 读书笔记 第七章 敏捷测试
查看>>
《人,绩效和职业道德》读后感
查看>>
centos查看外网ip
查看>>
去除ios端输入框的弹出
查看>>
Python从内存中使用编译后的模块
查看>>
排序算法之快速排序
查看>>
Web前端——表单提交和Js添加选项
查看>>
Win10系统给文件夹添加备注
查看>>
最大子段和模板
查看>>
51nod 1183 编辑距离【线性dp+类似最长公共子序列】
查看>>
清除打印机队列中无法清除的任务 & 清空打印池
查看>>
bzoj 2069 [ POI 2004 ] ZAW —— 多起点最短路 + 二进制划分
查看>>
二叉平衡树的平衡调整
查看>>
EF 取出demical数据,但需要去点小数,排序
查看>>
jvm instrument
查看>>
C++ 类类型占用内存大小一题
查看>>
vue瀑布流布局组件vue-waterfall
查看>>