14

UILabelをコンマ以上でドル記号とコンマ(小数点なし)でフォーマットしたい。

これが私が使用しているコードです:

IBOutlet UILabel *labelrev

float rev = (x + y)

labelrev.text = [[NSString alloc] initWithFormat:@%2.f",rev];

xxx、xxx、xxxまたは$ xxx、xxx、xxxを取得したい出力としてxxxxxxxxxを取得します

それ、どうやったら出来るの?

4

3 に答える 3

44

あなたは間違いなくNSNumberFormatterこれに使用する必要があります。基本的な手順は次のとおりです。

  1. ナンバーフォーマッターを割り当て、初期化し、構成します。
  2. フォーマッタを使用して、数値からフォーマットされた文字列を返します。(NSNumberが必要なため、doubleまたは必要なプリミティブをNSNumberに変換する必要があります。)
  3. 掃除。(ご存知のとおり、メモリ管理です。)

このコードは、数値フォーマッタを設定します。通貨ビットを除いて、あなたがやりたいことはすべてやりました。ドキュメントでそれを調べることができます。

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でdoubleをラップします。私はそれをインラインで行いますが、2つのステップに分けることができます。

NSString *formattedString = [formatter stringFromNumber:[NSNumber numberWithFloat:rev];

クリーンアップすることを忘れないでください!

[formatter release];

ローカリゼーションに関する簡単なメモ:

NSLocaleクラスは、ユーザーのロケールに関するいくつかの有用な情報を提供します。最初のステップでは、NSLocaleを使用してローカライズされたグループ化セパレーターを取得した方法に注目してください。

NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];

(終止符/ピリオドを使用する国もあれば、カンマを使用する国もあります。)ローカライズされた通貨記号を取得する方法もあると思いますが、100%確信が持てないので、ドキュメントを確認してください。(それはあなたが何をしようとしているかによります。)

于 2011-03-23T14:52:56.257 に答える
13

NSNumberFormatter通貨をサポートするを使用する必要があります。

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSLog(@"%@", [currencyFormatter stringFromNumber:[NSNumber numberWithInt:10395209]]);
[currencyFormatter release];

プリント:$ 10,395,209.00

于 2011-03-23T14:25:31.900 に答える
2
[formatterCurrency setMaximumFractionDigits:0]

NSNumberFormatterCurrencyStyleフォーマッタで10進数と小数点を変換する唯一の方法です。

NSNumberFormatter *formatterCurrency;
formatterCurrency = [[NSNumberFormatter alloc] init];

formatterCurrency.numberStyle = NSNumberFormatterCurrencyStyle;
[formatterCurrency setMaximumFractionDigits:0];
[formatterCurrency stringFromNumber: @(12345.2324565)];

結果

12,345 $

于 2013-02-14T18:42:48.157 に答える