NSDecimalNumber是NSNumber的子类,比NSNumber的功能更为强大,可以指定一个数的幂,四舍五入等操作。由于NSDecimalNumber精度较高,所以会比基本数据类型费时,所以需要权衡考虑,苹果官方建议在货币以及要求精度很高的场景下使用。
次方运算
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithMantissa:12345 exponent:-2 isNegative:NO];
这会输出 123.45
加减法
NSDecimalNumber*price1 = [NSDecimalNumber decimalNumberWithString:@"12.34"];
NSDecimalNumber*price2 = [NSDecimalNumber decimalNumberWithString:@"12.56"];
//相加
NSDecimalNumber *subTotal = [price1 decimalNumberByAdding:price2];
//相减
NSDecimalNumber *afterCoupon = [price1 decimalNumberBySubtracting: price2];
//相乘
NSDecimalNumber *afterDiscount = [price1 decimalNumberByMultiplyingBy: price2];