文档章节

iOS 金融数字计算

 王素年
发布于 2016/07/27 11:55
字数 238
阅读 52
收藏 0

iOS 金融数字计算

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

 

 

- (void)viewDidLoad {

    [super viewDidLoad];

 

    /*

    NSRoundPlain,   貌似取整

   

    NSRoundDown,    只舍不入

   

    NSRoundUp,      只入不舍

   

    NSRoundBankers  貌似四舍五入

    */

   

    /*

    decimalNumberByAdding  +

    

    */

   

    NSDecimalNumberHandler *roundUp = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundBankers scale:2 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:YES];

   

   

    NSDecimalNumber *one = [NSDecimalNumber decimalNumberWithString:@"90.7009"];

    NSDecimalNumber *two = [NSDecimalNumber decimalNumberWithString:@"0.22"];

   

   

    //1. one + two 不做任何处理

    NSDecimalNumber *result1 = [one decimalNumberByAdding:two];

   

    //2. one - two 不做任何处理

    NSDecimalNumber *result2 = [one decimalNumberBySubtracting:two];

   

    //3. one * two 不做任何处理

    NSDecimalNumber *result3 = [one decimalNumberByMultiplyingBy:two];

 

   

   

   

    //4. one + two 四舍五入

    NSDecimalNumber *result4 = [one decimalNumberByAdding:two withBehavior:roundUp];

 

   

   

    //比较大小

    NSDecimalNumber *discount1 = [NSDecimalNumber decimalNumberWithString:@".85"];

   

    NSDecimalNumber *discount2 = [NSDecimalNumber decimalNumberWithString:@".9"];

   

    NSComparisonResult result = [discount1 compare:discount2];

   

    if (result == NSOrderedAscending) {

       

        NSLog(@"小于");

       

    } else if (result == NSOrderedSame) {

       

        NSLog(@"等于");

       

    } else if (result == NSOrderedDescending) {

       

        NSLog(@"大于");

       

    }

   

 

 

   

   

}

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 70
码字总数 43954
作品 0
普陀
程序员
ios时间那点事--NSLocale

iOS时间那点事 NSLocale 若你只开发中国区的应用,需要保证用户修改当前语言环境时应用的显示不发生变化。而像NSDateFormatter这样的类,会根据设备的设置,自动返回不同语言的数据。为了保证...

JustBen
2013/08/22
0
0
C++文件读写详解(ofstream,ifstream,fstream)

在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: [java] view pl...

涩女郎
2015/08/19
0
0
必升!iOS 12正式版官宣:拯救老设备

来源 | 安兔兔 今天早上,苹果官方公众号发文称,iOS 12正式版即将发布,并公布了iOS 12的部分新功能。 按照苹果的说法,iOS 12增加了许多新功能和优化,轻扫打开相机的速度最高提升70%,键盘...

比特网
09/17
0
0
移动深度学习 Mobile-deep-learning(MDL)

Free and open source mobile deep learning framework, deploying by Baidu. This research aims at simply deploying CNN on mobile devices, with low complexity and high speed. It sup......

磐石001
2017/09/25
0
0
IOS:基于分片技术的区块链底层公链|SSR评级

前言: IOS是一个创新且安全的区块链模型,目前正在建设超高TPS区块链设施,以满足分散经济的安全和可伸缩性需求。IOS希望为用户提供一个完全去中心化的在线服务和数字商品交换平台,同时也为...

SSRating
09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

什么是集群、分布式、集中式、伪分布式

1. 集中式 将项目等部署到同一台机器上,对机器性能要求比较高,一般会用多台机器备份,否则,如果机器出现死机等状况,整个项目将不能运行。 eg:就好比你要盖一座房子,你房子就给一个人盖...

吴伟祥
43分钟前
1
0
微服务写的最全的一篇文章

今年有人提出了2018年微服务将疯狂至死,可见微服务的争论从未停止过。在这我将自己对微服务的理解整理了一下,希望对大家有所帮助。 1.什么是微服务 1)一组小的服务(大小没有特别的标准,...

Java烂猪皮
44分钟前
1
0
Java 并发编程原理

为什么要使用多线程? 通过多线程提高吞吐量 伸缩性比较好,可以增加 CPU 核心来提高程序性能 什么场景下使用多线程? 如:tomcat BIO Java 如何实现多线程? Thread、Runnable、ExecutorSer...

aelchao
59分钟前
2
0
谨慎的覆盖clone方法

说在前面 有些专家级程序员干脆从来不去覆盖clone方法,也从来不去调用它,除非拷贝数组。 其他方式 可以提供一个构造函数或者工厂去实现clone功能。 相比于clone,它们有如下优势: 不依赖于...

XuePeng77
今天
1
0
什么是最适合云数据库的架构设计?

分布式数据库技术发展多年,但是在应用、业务的驱动下,分布式数据库的架构一直在不断发展和演进。 开源金融级分布式数据库SequoiaDB,经过6年的研发,坚持从零开始打造数据库核心引擎。在技...

巨杉数据库
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部