對於常常處理不同的數值格式輸出時,是不是會覺得很困擾,如果你也有這類的煩惱,何不考慮使用 NSNumberFormatter 中的 setNumberStyle 方法函式,替你的數值格式化成不同的輸出格式,不過有個前提,你必需先將你手邊的數值轉換成 NSNumber 型態的物件,NSNumber 是在 Objective-C 中很常被使用來處理數值相關的資料型態,有別於一般傳統的數字資料型態,像是 int、float 或是 double 等,NSNumber 是一個物件,而非單純的數值資料型態,這表示 NSNumber 可以被用來做更多的事情,同時也可以更有效率的在各個不同的數值資料型態之間做轉換。
NSNumberFormatter 中的 setNumberStyle 方法函式提供了數種不同的格式來做轉換,查閱 NSNumberFormatter.h 與 CFNumberFormatter.h 檔案中的說明,包含以下6 種輸出格式。
//NSNumberFormatter.h
enum {
NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle
};
//CFNumberFormatter.h
enum { // number format styles
kCFNumberFormatterNoStyle = 0,
kCFNumberFormatterDecimalStyle = 1,
kCFNumberFormatterCurrencyStyle = 2,
kCFNumberFormatterPercentStyle = 3,
kCFNumberFormatterScientificStyle = 4,
kCFNumberFormatterSpellOutStyle = 5
};
你可以參考以下程式碼,使用 NSNumberFormatter 來格式化 NSNumber 中的數值。
//設定NSNumberFormatter的類型為貨幣格式
NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
//取得數值並正規化
NSNumber *number = [NSNumber numberWithDouble:[[numberField text] doubleValue]];
NSString *formatString = [formatter stringFromNumber:number];
//輸出字串
[formatLabel setText:formatString];
ps:NSNumberFormatterNoStyle 為不包含任字元格式類型,同時也是不包含小數點位數的整數類型。
沒有留言:
張貼留言