NSDecimalNumber使用

在開發中,遇到和貨幣價格計算相關的問題時,需要注意計算的精度。在使用float類型運算,會出現精度丟失問題。可使用NSDecimalNumber。

NSDecimalNumber *a = [NSDecimalNumber decimalNumberWithString:@"93.891"];
NSDecimalNumber *b = [NSDecimalNumber decimalNumberWithString:@"8.764"];

1.加法

//不進行四捨五入
NSDecimalNumber *num = [a decimalNumberByAdding:b];
//四捨五入
//NSRoundUp屬性使所有的操作算到最近的位置,其他的進位選項是NSRoundPlain, NSRoundDown, 和 NSRoundBankers,它們都被定義在NSRoundingMode,scale參數定義了結果值保留的小數位的數量,其餘的參數給所有的操作定義了異常處理行爲.
NSDecimalNumberHandler *roundUp = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:2 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:YES];
NSDecimalNumber *num = [a decimalNumberByAdding:b withBehavior:roundUp];

2.減法

NSDecimalNumber *num = [a decimalNumberBySubtracting:b];

3.乘法

NSDecimalNumber *num = [a decimalNumberByMultiplyingBy:b];

3.除法

NSDecimalNumber *num = [a decimalNumberByDividingBy:b];
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章