UILabelをコンマ以上でドル記号とコンマ(小数点なし)でフォーマットしたい。
これが私が使用しているコードです:
IBOutlet UILabel *labelrev
float rev = (x + y)
labelrev.text = [[NSString alloc] initWithFormat:@%2.f",rev];
Xxx、xxx、xxxまたは$ xxx、xxx、xxxを取得したい出力としてxxxxxxxxxを取得します
それ、どうやったら出来るの?
これには間違いなく NSNumberFormatter
を使用する必要があります。基本的な手順は次のとおりです。
このコードは、数値フォーマッターを設定します。私は通貨ビットを除いてあなたが望むすべてをしました。ドキュメントでそれを調べることができます。
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];
[formatter setGroupingSeparator:groupingSeparator];
[formatter setGroupingSize:3];
[formatter setAlwaysShowsDecimalSeparator:NO];
[formatter setUsesGroupingSeparator:YES];
次に、番号を設定して、フォーマットされた文字列を返します。あなたの場合、ダブルをNSNumberでラップします。私はそれをインラインで行いますが、2つのステップに分けることができます。
NSString *formattedString = [formatter stringFromNumber:[NSNumber numberWithFloat:rev];
クリーンアップすることを忘れないでください!
[formatter release];
ローカリゼーションに関する簡単なメモ:
NSLocaleクラスは、ユーザーのロケールに関するいくつかの有用な情報を提供します。最初のステップでは、NSLocaleを使用してローカライズされたグループ化セパレーターを取得した方法に注目してください。
NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];
(終止符/ピリオドを使用する国もあれば、カンマを使用する国もあります。)ローカライズされた通貨記号を取得する方法もあると思いますが、100%確信が持てないため、ドキュメントを確認してください。 (それはあなたが何をしようとしているかによります。)
通貨をサポートする NSNumberFormatter
を使用する必要があります。
NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSLog(@"%@", [currencyFormatter stringFromNumber:[NSNumber numberWithInt:10395209]]);
[currencyFormatter release];
プリント:$ 10,395,209.00
[formatterCurrency setMaximumFractionDigits:0]
nSNumberFormatter CurrencyStyleフォーマッタで10進数と小数点記号を変換する唯一の方法です。
NSNumberFormatter *formatterCurrency;
formatterCurrency = [[NSNumberFormatter alloc] init];
formatterCurrency.numberStyle = NSNumberFormatterCurrencyStyle;
[formatterCurrency setMaximumFractionDigits:0];
[formatterCurrency stringFromNumber: @(12345.2324565)];
結果
12,345 $