在开发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);
}