//有时候,在开发过程中, 总会遇到货币计算, 但是 那些基本数据类型往往会让你得到意想不到的结果, 当然系统已经给我们提供了货币计算的方法, 世间万物存在即合理, 既然已经有方法了, 那么肯定这个方法是靠谱的,
//先创建一个枚举类型的属性, 用来做加减乘除的判断
typedef enum {
Adding,
Subtracting,
Multiplying,
Dividing,
}calucateWay;
#pragma mark 货币计算
+ (NSString *)decimalNumberCalucate:(NSString *)originValue1 originValue2:(NSString *)originValue2 calucateWay:(calucateWay)calucateWay
{
NSDecimalNumber *decimalNumber1 = [NSDecimalNumberdecimalNumberWithString:originValue1];
NSDecimalNumber *decimalNumber2 = [NSDecimalNumberdecimalNumberWithString:originValue2];
NSDecimalNumber *product;
switch (calucateWay) {
case Adding:
NSLog(@"+++++++++");
product = [decimalNumber1 decimalNumberByAdding:decimalNumber2];
break;
case Subtracting:
NSLog(@"---------");
product = [decimalNumber1 decimalNumberBySubtracting:decimalNumber2];
break;
case Multiplying:
NSLog(@"*********");
product = [decimalNumber1 decimalNumberByMultiplyingBy:decimalNumber2];
break;
case Dividing:
NSLog(@"/");
product = [decimalNumber1 decimalNumberByDividingBy:decimalNumber2];
break;
default:
break;
}
return [product stringValue];
}
//比较大小
NSDecimalNumber*discount1 = [NSDecimalNumberdecimalNumberWithString:@".85"];
NSDecimalNumber*discount2 = [NSDecimalNumberdecimalNumberWithString:@".9"];
NSComparisonResult result = [discount1 compare:discount2];
if (result ==NSOrderedAscending) {
NSLog(@"85%% < 90%%小于");
} else if (result == NSOrderedSame) {
NSLog(@"85%% == 90%%等于");
} elseif (result ==NSOrderedDescending) {
NSLog(@"85%% > 90%%大于");
}