文档章节

NSDecimalNumber,精确计算价格

iOS赵师顺
 iOS赵师顺
发布于 2017/05/04 16:44
字数 320
阅读 63
收藏 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
博文 74
码字总数 36150
作品 0
昌平
程序员
私信 提问
iOS 金融数字计算

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

王素年
2016/07/27
26
0
记录一下iOS开发中琐碎的点点_2

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

hell03W
2016/04/13
37
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
0
Apple Pay-swift篇

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

w_sen
2016/07/07
57
0
【iOS Framework】ApplePay苹果支付

环境配置: 1 注册一个你的App ID 1.1 在创建App ID 右边点击+,如下图所示: 1.2 填写App Name、Bundle ID,如下图所示: 1.3 勾选Apple Pay 点击下一步完成注册,会看到Apple Pay 为待配置...

魔笛GNR
2016/07/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里云建站

阿里云自营建站 没想到阿里云已经切入这块市场了。可以用拖动的方式来建站的模式,真的还是6.

miaojiangmin
27分钟前
2
0
linux系统top命令:virt,res,shr详解

VIRT:virtual memory usage 虚拟内存 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用...

刘祖鹏
33分钟前
2
0
day154-2018-11-21-英语流利阅读-待学习

快手网红发明家:百万粉丝 vs 零销量 雪梨 2018-11-21 1.今日导读 “我做了一个‘雷神锤’的斜挎包,你看这里可以打开,里面可以装手机、卫生纸、钱包,觉得轻的话可以放一些砖头。咱们把它背...

飞鱼说编程
40分钟前
10
0
图灵奖得主华人高徒发布AI芯片!64位RISC-V、高度可编程,低功耗

作为RISC-V架构下的旗手玩家,睿思芯科自然希望通过产品展现出RISC-V可编程架构的巨大潜力。 https://mbd.baidu.com/newspage/data/landingshare?context=%7B%22nid%22:%22news_917924603675...

whoisliang
40分钟前
4
0
xcode 10 缺少 libstdc++6.0.9 解决方案

image.png 本方案基于xcode10正式版操作,其它版本请自行验证! 苹果在XCode10中移除了libstdc++(libstdc++.6、libstdc++6.0.9)库。 项目解决方法:删除libstdc++(libstdc++.6、libstdc++6....

壹峰
44分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部