NSDecimalNumber一種對象,用於表示和執行以10為基數的算術。2. 類---NSDecimalNumber 一種對象,用於表示和執行以10為基數的算術。
3.NSDecimalNumber繼承NSNumber
4. NSDecimalNumber是NSNumber的一個不可變子類,它提供了一個面向對象的包裝器,用於進行基於10的算術。一個實例可以表示任何可以表示為尾數x10 ^指數的數,其中尾數是一個長到38位的十進位整數,指數是一個從-128到127的整數。
NSDecimalNumber* number = [NSDecimalNumber decimalNumberWithString:@"20"];//創建並返回一個十進位數,其值等效於給定數字字符串中的值。----
NSLog(@"%@",number);//---20
NSLog(@"%@",NSDecimalNumber.one);//與數字1.0等價的十進位數。------1
NSLog(@"%@",NSDecimalNumber.zero);//一種十進位數,相當於數字0.0。---0
NSLog(@"%@",NSDecimalNumber.notANumber);//沒有指定數字的十進位數。----nan
NSDecimalNumber* number1 = [NSDecimalNumber decimalNumberWithString:@"201"];
//算術計算
NSDecimalNumber* number2= [number decimalNumberByAdding:number1];//將這個數字與另一個給定的數字相加。
NSLog(@"%@",number2);//---221
NSDecimalNumber* number3= [number1 decimalNumberBySubtracting:number];//一個數字減去另一個數字
NSLog(@"%@",number3);//181
NSDecimalNumber* number4= [number1 decimalNumberByMultiplyingBy:number];//將這個數乘以另一個給定的數。
NSLog(@"%@",number4);// 4020
NSDecimalNumber* number5= [number1 decimalNumberByDividingBy:number];//把這個數除以另一個給定的數。
NSLog(@"%@",number5);//10.05
NSDecimalNumber* number6= [number decimalNumberByRaisingToPower:2];//數字提高到給定的冪。
NSLog(@"%@",number6);//400
NSDecimalNumber* number7= [number decimalNumberByMultiplyingByPowerOf10:2];//乘以10的給定次方。
NSLog(@"%@",number7);//2000
//NSDecimalNumberHandler--一種協議,它聲明了三種方法,控制處理十進位數的任意方面。scale和roundingMode方法決定了NSDecimalNumber返回值的精度,以及這些值應該如何四捨五入以適應該精度。方法確定了NSDecimalNumber對象處理不同計算錯誤的方式。
// roundUp屬性使所有的操作算到最近的位置,其他的進位選項是NSRoundPlain, NSRoundDown, 和 NSRoundBankers,它們都被定義在NSRoundingMode,scale參數定義了結果值保留的小數位的數量,其餘的參數給所有的操作定義了異常處理行為.
//scale四捨五入,捨入位數
//roundingMode 返回NSDecimalNumber的decimalNumberBy…方法將返回值四捨五入。必需的。
NSDecimalNumberHandler *roundUp = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:2 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:YES];
NSDecimalNumber* number8= [number decimalNumberByAdding:number1 withBehavior:roundUp];//使用指定的行為將此數字添加到另一個給定的數字。
NSLog(@"%@",number8);//221
NSDecimalNumber* number9= [number1 decimalNumberBySubtracting:number withBehavior:roundUp];//用指定的行為將這個數字減去這個數字。
NSLog(@"%@",number9);//181
NSDecimalNumber* number10= [number1 decimalNumberByMultiplyingBy:number withBehavior:roundUp];//使用指定的行為將此數字乘以另一個給定的數字。
NSLog(@"%@",number10);//4020
NSDecimalNumber* number11= [number1 decimalNumberByDividingBy:number withBehavior:roundUp];//使用指定的行為將此數字除以另一個給定的數字。
NSLog(@"%@",number11);///10.05
NSDecimalNumber* number12= [number1 decimalNumberByRaisingToPower:2 withBehavior:roundUp];//使用指定的行為將數字提高到給定的冪。
NSLog(@"%@",number12);///10.05
NSDecimalNumber* number13= [number1 decimalNumberByMultiplyingByPowerOf10:2 withBehavior:roundUp];//使用指定的行為乘以10的給定次方。
NSLog(@"%@",number13);///2000
NSDecimalNumber* number14= [number1 decimalNumberByRoundingAccordingToBehavior:roundUp];//使用指定的捨入行為返回小數的四捨五入版本。
NSLog(@"%@",number14);///201
NSDecimalNumber* number15= [number1 decimalNumberByRoundingAccordingToBehavior:NSDecimalNumber.defaultBehavior];//算術方法四捨五入並處理錯誤條件的方法。
NSLog(@"%@",number15);///201
//,[number15 decimalValue]十進位數的值,表示為NSDecimal結構。
NSLog(@"%f",[number15 doubleValue]);//小數的最接近的近似雙值。--201.000000
NSDecimalNumber* number16= [roundUp exceptionDuringOperation:@selector(did) error:NSCalculationNoError leftOperand:number1 rightOperand:number];//指定一個NSDecimalNumber對象在遇到錯誤時將做什麼。
NSLog(@"%@",number16);///201
NSLog(@"%ld", (long)[number1 compare:number]);//比較這個小數和另一個小數。--1
NSLog(@"%@",[number15 descriptionWithLocale:[NSLocale systemLocale] ]);//201--返回適合於指定區域設置的小數的字符串表示形式。 --參數為NSLocale的實例或具有與NSLocaleDecimalSeparator鍵對應的字符串值的字典。
NSLog(@"%s",number16.objCType);//包含Objective-C類型的C字符串,用於十進位數對象中包含的數據。
NSLog(@"%@",[NSDecimalNumber maximumDecimalNumber]);//返回小數的最大可能值。
NSLog(@"%@",[NSDecimalNumber minimumDecimalNumber]);///返回小數的最小可能值。