iOS 金融數字計算ide
後臺返回的金額數是字符串NSString,要對其進行計算的話,當時就轉成CGFloat,結果發現轉後的數值和字符串不同了,多了不少位(不許確了),解決這個問題須要使用金融貨幣的API。ip
- (void)viewDidLoad {ci
[super viewDidLoad];字符串
/*it
NSRoundPlain, 貌似取整io
NSRoundDown, 只舍不入後臺
NSRoundUp, 只入不捨im
NSRoundBankers 貌似四捨五入di
*/view
/*
decimalNumberByAdding +
*/
NSDecimalNumberHandler *roundUp = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundBankers scale:2 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:YES];
NSDecimalNumber *one = [NSDecimalNumber decimalNumberWithString:@"90.7009"];
NSDecimalNumber *two = [NSDecimalNumber decimalNumberWithString:@"0.22"];
//1. one + two 不作任何處理
NSDecimalNumber *result1 = [one decimalNumberByAdding:two];
//2. one - two 不作任何處理
NSDecimalNumber *result2 = [one decimalNumberBySubtracting:two];
//3. one * two 不作任何處理
NSDecimalNumber *result3 = [one decimalNumberByMultiplyingBy:two];
//4. one + two 四捨五入
NSDecimalNumber *result4 = [one decimalNumberByAdding:two withBehavior:roundUp];
//比較大小
NSDecimalNumber *discount1 = [NSDecimalNumber decimalNumberWithString:@".85"];
NSDecimalNumber *discount2 = [NSDecimalNumber decimalNumberWithString:@".9"];
NSComparisonResult result = [discount1 compare:discount2];
if (result == NSOrderedAscending) {
NSLog(@"小於");
} else if (result == NSOrderedSame) {
NSLog(@"等於");
} else if (result == NSOrderedDescending) {
NSLog(@"大於");
}
}