/**
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);