2012-04-03 111 views
0

我想格式化一個數字,就像這個「123.123,00」。我正在使用NSNumberFormatter。 代碼是:NSNumberFormatter在小數點後不加逗號

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setGroupingSize:3]; 
[numberFormatter setGroupingSeparator:@"."]; 
[numberFormatter setUsesGroupingSeparator:YES]; 
[numberFormatter setMaximumFractionDigits:12]; 

NSNumber *num = [NSNumber numberWithDouble:result]; 

NSString *formattedString = [numberFormatter stringFromNumber:num]; 

但它似乎沒有工作。它給出了這樣的結果「266.482107256796」。任何想法爲什麼結果不是「266.482,107,256,796」?

回答

0

分組分離器用於分離數字在若干的整數部分,並且在小數部分不使用。沒有內置的方法來實現這種效果。如果只支持十進制數字,則可以手動分析格式化的字符串,並在每個3個字符後插入一個逗號,從小數點分隔符開始。

NSMutableString *s = [NSMutableString stringWithString: formattedString]; 
NSUInteger decimalSeparatorLocation = [s rangeOfString: @"."].location; 
if (decimalSeparatorLocation != NSNotFound) { 
    for (NSUInteger i = decimalSeparatorLocation + 4; i + 1 < [s length]; i += 4) 
     [s insertString: @"," atIndex: i]; 
} 

警告:該代碼是鍵入在iPad(c)中。

+0

我不是關於是否有任何選擇使用內置函數來做到這一點。我搜索了幾個小時。感謝您確認並提供代碼。它正在轉換709.099639039865到709.09,96,39,03,98,65,但它沒有問題。它只需要將增量值從3更改爲4.(NSUInteger i = decimalSeparatorLocation + 4; i + 1 <[s長度]; i + = 4)' – 2012-04-04 07:16:24

+0

@ZakirHyder感謝您的更正。我編輯答案只是因爲答案在各方面都應該是正確的。 – Costique 2012-04-04 08:45:10

0

嘗試使用此:

[numberFormatter setDecimalSeparator:@","]; 
+0

這並不能解決這個問題。它只是取代。與226.798225至226,798225一樣。我想要的是226.798225到226.798,225 – 2012-04-04 07:05:39