美文网首页
iOS NSDecimalNumber解决float、doub

iOS NSDecimalNumber解决float、doub

作者: Sweet哞哞 | 来源:发表于2017-05-10 18:02 被阅读0次

在开发App的过程中总是避免不了一下简单的算法的计算,当然我说的是最最基础的算法(+、-、x、÷)。

首先我来简单的介绍一下 NSDecimalNumber吧:

NSDecimalNumber是NSNumber的子类,比NSNumber的功能更为强大,可以指定一个数的幂,四舍五入等操作。由于NSDecimalNumber精度较高,所以会比基本数据类型费时,所以需要权衡考虑,苹果官方建议在货币以及要求精度很高的场景下使用。                                   例如:实现计算器的功能,使用float  double 类型进行计算根本行不通,因为精确度相对比较低。

运算结果:

代码复制如下:

-(void)decimalNumberCalculator

{

//第一步:声明变量

NSDecimalNumber *firstDecimalNumber=[[NSDecimalNumber alloc] initWithString:@"9.85"];

NSDecimalNumber *secondDecimalNumber=[[NSDecimalNumber alloc] initWithString:@"5.62"];

NSDecimalNumber *resultDecimalNumber=[[NSDecimalNumber alloc] init];

//加法运算 decimalNumberByAdding

resultDecimalNumber=[firstDecimalNumber decimalNumberByAdding:secondDecimalNumber];

//使用对比的方法比较直观

double resultDouble=9.85+5.62;

NSLog(@"\nresultDecimalNumber---:%@\n----resultDouble----:%lf",resultDecimalNumber,resultDouble);

//减法运算 decimalNumberBySubtracting

resultDecimalNumber=[firstDecimalNumber decimalNumberBySubtracting:secondDecimalNumber];

resultDouble=9.85-5.62;

NSLog(@"\nresultDecimalNumber---:%@\n----resultDouble----:%lf",resultDecimalNumber,resultDouble);

//乘法运算

resultDecimalNumber=[firstDecimalNumber decimalNumberByMultiplyingBy:secondDecimalNumber];

resultDouble=9.85*5.62;

NSLog(@"\nresultDecimalNumber---:%@\n----resultDouble----:%lf",resultDecimalNumber,resultDouble);

//除法运算

resultDecimalNumber=[firstDecimalNumber decimalNumberByDividingBy:secondDecimalNumber];

resultDouble=9.85/5.62;

NSLog(@"\nresultDecimalNumber---:%@\n----resultDouble----:%lf",resultDecimalNumber,resultDouble);

}

相关文章

网友评论

      本文标题:iOS NSDecimalNumber解决float、doub

      本文链接:https://www.haomeiwen.com/subject/aiphattx.html