文档章节

NSDecimalNumber,精确计算价格

iOS赵师顺
 iOS赵师顺
发布于 2017/05/04 16:44
字数 320
阅读 54
收藏 0
点赞 0
评论 0
    /**
     NSRoundPlain,   // Round up on a tie //貌似取整
     
     NSRoundDown,    // Always down == truncate  //只舍不入
     
     NSRoundUp,      // Always up    // 只入不舍
     
     NSRoundBankers  // on a tie round so last digit is even  貌似四舍五入
     */
    
    /**
     scale:保留有效小数的个数(为0的无效小数后自动过滤).
     Exactness:进度异常、
     Overflow:向上溢出、
     Underflow:向下溢出、
     DivideByZero:除数为0。当参数为YES出错会抛出异常,为NO时忽略异常。返回nil.
     */
    NSDecimalNumberHandler *roundUp = [NSDecimalNumberHandler
                                       decimalNumberHandlerWithRoundingMode:NSRoundBankers
                                       scale:2
                                       raiseOnExactness:NO
                                       raiseOnOverflow:NO
                                       raiseOnUnderflow:NO
                                       raiseOnDivideByZero:YES];
    
// 1 字符串 转化NSDecimalNumber
    NSDecimalNumber *num1 = [NSDecimalNumber decimalNumberWithString:@"123.001"];
    NSLog(@"%@",num1);
//2 基本数据类型 转化NSDecimalNumber
    NSDecimalNumber *num2 = [NSDecimalNumber decimalNumberWithDecimal:[[NSNumber numberWithInteger:456] decimalValue]];
    NSLog(@"%@",num2);
    //  NSDecimalNumber 转化成 String
    _label.text = num2.stringValue;
    
// 3 加法运算
    NSDecimalNumber *num3 = [num1 decimalNumberByAdding:num2];
    NSLog(@"%@",num3);
    NSDecimalNumber *num4 = [num1 decimalNumberByAdding:num2 withBehavior:roundUp];
    NSLog(@"%@",num4);
    
// 4 减法运算
    NSDecimalNumber *num5 = [num1 decimalNumberBySubtracting:num2];
    NSLog(@"%@",num5);
    
// 5 乘法运算
    NSDecimalNumber *num6 = [num1 decimalNumberByMultiplyingBy:num2];
    NSLog(@"%@",num6);

// 6 除法运算
    NSDecimalNumber *num7 = [num2 decimalNumberByDividingBy:num1];
    NSLog(@"%@",num7);

// 7 比较
    /**
     NSDecimalNumber 与 NSNumber 的比较
     */
   BOOL tureOrFlase =  [num1 isEqualToNumber:@(90)];
    NSLog(@"%d",tureOrFlase);
    /**
     NSDecimalNumber 与 NSDecimalNumber 比较
     */
    NSComparisonResult result = [num1 compare:num2];
    NSLog(@"%ld",(long)result);

 

© 著作权归作者所有

共有 人打赏支持
iOS赵师顺
粉丝 3
博文 73
码字总数 35628
作品 0
昌平
程序员
iOS 金融数字计算

iOS 金融数字计算 后台返回的金额数是字符串NSString,要对其进行计算的话,当时就转成CGFloat,结果发现转后的数值和字符串不一样了,多了很多位(不准确了),解决这个问题需要使用金融货币...

王素年 ⋅ 2016/07/27 ⋅ 0

记录一下iOS开发中琐碎的点点_2

modal出来新控制器半透明 modalPresentationStyle属性必须在之前赋值, 否则无效.... 2. 应用状态发生变化时候发出的通知 3. UIViewController的automaticallyAdjustsScrollViewInsets属性 au...

hell03W ⋅ 2016/04/13 ⋅ 0

object-c中NSString与int和float的相互转换

NSString *tempA = @"123"; NSString *tempB = @"456"; 1,字符串拼接 NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB]; 2,字符转int int intString = [newString ......

mahb520 ⋅ 2013/06/27 ⋅ 0

电商中应该使用秒还是毫秒

看了淘宝的双11,我们这些码畜简直自愧不如,可是程序员这条道路还是得继续啊,还是需要努力学习,所以还是慢慢记录自己做电商中遇到的问题吧。 由于最近在最近的秒杀活动中,发现几个整点订...

卖小女孩的小火柴 ⋅ 2015/11/14 ⋅ 0

Apple Pay-swift篇

这是上一篇的OC版 有一些文字说明,Merchant ID 证书配置 可以参照 补充一点证书方面的东西 签发机构在钥匙串中是以Apple Worldwide Developer Relations开头的证书Apple Worldwide Develop...

w_sen ⋅ 2016/07/07 ⋅ 0

如果要求精确的答案,请避免使用float和double

float和double类型的主要设计目的是为了科学计算和工程计算。它们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果...

目翟 ⋅ 2013/11/19 ⋅ 3

Q quant秘技——MC方差缩减(控制变量篇)

由于知乎出了点问题,不得已重发。 大家好,我是黑猫Q形态。继上次 https://zhuanlan.zhihu.com/p/21329461以来,因为各种琐事而且所以出慢了,在这里给各位道歉。写这些东西确实需要慢工出细...

黑猫Q形态 ⋅ 2016/06/30 ⋅ 0

经济金融系列学习:伊藤引理和看涨期权

总结一下上一篇文章的结论,我们之前用的选择一个特殊的函数,是y=x²,那么如果是用一个普式的函数的话我们用伊藤公式就能得到: 如果是y关于x的函数: 如果是y关于x,t的函数,会有: 就是说如果他...

云时之间 ⋅ 2017/11/19 ⋅ 0

非打印状态下保留两位小数点的float数据方法

最近快被iOS的四舍五入的问题给烦死了,不是说他的四舍五入不好用,而是这个四舍五入有时可能不是四舍五入,而是四舍六入。 先说一下我最后确定使用的方法: -(float)roundFloat:(float)pric...

奋斗的青春年华 ⋅ 2016/12/08 ⋅ 0

ApplePay测试开发心得

ApplePay测试开发心得 ***上周自己测试了一下的开发. 今天面试的一个iOS开发, 我说ApplePay和3D-Touch, 那货竟然一愣一愣的... 看来还是有很多人不太会的, 分享一下吧, 让更多的人学习. 不试...

hell03W ⋅ 2016/03/24 ⋅ 4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Greys Java在线问题诊断工具

https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf#command-monitor

素雷 ⋅ 14分钟前 ⋅ 0

git从远程仓库拉取代码的常用指令

一种(比较麻烦的)拉代码的方法 git clone //克隆代码库,与远程代码库的主干建立连接,如果主干已经在就不用再clone啦,克隆路径为当前路径下的新创建的文件夹 git checkout -b //本地建立...

Helios51 ⋅ 28分钟前 ⋅ 0

005. 深入JVM学习—Java堆内存参数调整

1. JVM整体内存调整图解(调优关键) 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张...

影狼 ⋅ 33分钟前 ⋅ 0

内存障碍: 软件黑客的硬件视图

此文为笔者近日有幸看到的一则关于计算机底层内存障碍的学术论文,并翻译(机译)而来[自认为翻译的还行],若读者想要英文原版的论文话,给我留言,我发给你。 内存障碍: 软件黑客的硬件视图...

Romane ⋅ 今天 ⋅ 0

SpringCloud 微服务 (七) 服务通信 Feign

壹 继续第(六)篇RestTemplate篇 做到现在,本机上已经有注册中心: eureka, 服务:client、order、product 继续在order中实现通信向product服务,使用Feign方式 下面记录学习和遇到的问题 贰 or...

___大侠 ⋅ 今天 ⋅ 0

gitee、github上issue标签方案

目录 [TOC] issue生命周期 st=>start: 开始e=>end: 结束op0=>operation: 新建issueop1=>operation: 评审issueop2=>operation: 任务负责人执行任务cond1=>condition: 是否通过?op3=>o......

lovewinner ⋅ 今天 ⋅ 0

浅谈mysql的索引设计原则以及常见索引的区别

索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索...

屌丝男神 ⋅ 今天 ⋅ 0

String,StringBuilder,StringBuffer三者的区别

这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 首先说运行速度,或者说是, 1.执行速度 在这方面运行速度快慢为:StringBuilder(线程不安全,可变) > StringBuffer...

时刻在奔跑 ⋅ 今天 ⋅ 0

java以太坊开发 - web3j使用钱包进行转账

首先载入钱包,然后利用账户凭证操作受控交易Transfer进行转账: Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/Credentials credentials = Wallet......

以太坊教程 ⋅ 今天 ⋅ 0

Oracle全文检索配置与实践

Oracle全文检索配置与实践

微小宝 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部