NSNumberFormatter は間違いなく行く方法です! NSNumberFormatter に NSLocale を設定すると、フォーマッタはそのロケールに従って自動的に動作します。数値フォーマッタのデフォルトのロケールは、常にユーザーが選択した地域形式の通貨です。
NSDecimalNumber *someAmount = [NSDecimalNumber decimalNumberWithString:@"5.00"];
NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSLog(@"%@", [currencyFormatter stringFromNumber:someAmount]);
これにより、ユーザーのデフォルトの地域形式に従って、金額「5.00」が記録されます。通貨を変更したい場合は、次のように設定できます。
NSLocale *aLocale = [[NSLocale alloc] initWithLocaleIdentifier: "nl-NL"]
[currencyFormatter setLocale:aLocale];
そのロケールのデフォルトの通貨を選択します。
多くの場合、ユーザーの現地通貨ではなく、独自の通貨で請求しています。NSNumberFormatter
ユーザーの設定で数値の書式設定を維持しながら、強制的に通貨で書式設定するには、次を使用します。
currencyFormatter.currencyCode = @"USD"
currencyFormatter.internationalCurrencySymbol = @"$"
currencyFormatter.currencySymbol = @"$"
en-US では、これは$5.00
nl-NL のようにフォーマットされ$ 5,00
ます。