2012-04-03 14 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

セパレータのグループ化は、数値の整数部分の桁を分離するために使用され、小数部分でに使用されません。この効果を得るための組み込みの方法はありません。 10進数のみをサポートしている場合は、書式設定された文字列を手動で解析し、各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]; 
} 

警告:このコードはアプリ(C)に入力されます。

+0

私は組み込み関数でこれを行うためのオプションはありませんでした。私は何時間も探しました。ご確認いただきありがとうございます。それは709.099639039865を709.09,96,39,03,98,65に変換していますが、それは問題ではありません。ちょうど増分値を3から4に変更する必要があります.'for(NSUInteger i = decimalSeparatorLocation + 4; i + 1 <[s長さ]; i + = 4) ' –

+0

@ZakirHyder修正をありがとう。答えはすべての点で正しいはずですから、答えを編集しました。 – Costique

0

これを試してください:

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

これはこの問題を解決しません。それだけで置き換えます。 226.798225〜226,798225のように。私が欲しいのは226.798225〜226.798,225 –

関連する問題