5

Cocoa-Touch で正しいローカリゼーションを使用して、浮動小数点数のフォーマット済み出力を作成したいと考えています。出力は の出力と同等になるはずですprintf("%<a>.<b>f", n)。ここ<a>で、 は総桁<f>数、 は小数部の最大桁数です。

NSNumberFormatter<a>=6のセットアップ<f>=2: (プラットフォームは iOS 5.1 SDK、Xcode 4.3.3、および iPhone Simulator 5.1)

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle:NSNumberFormatterDecimalStyle];
[nf setPaddingCharacter:@" "];
[nf setUsesGroupingSeparator:NO];
[nf setLocale:[NSLocale autoupdatingCurrentLocale]];
[nf setUsesSignificantDigits:YES];
[nf setMaximumSignificantDigits:6];
[nf setMaximumFractionDigits:2];
[nf setRoundingMode:NSNumberFormatterRoundFloor];
NSLog(@"Test: %@", [nf stringFromNumber:[NSNumber numberWithDouble:2.64324897]]);

予想される出力(ドイツ語ロケールを使用):Test: 2,64

観測された出力(ドイツ語ロケール):Test: 2,64324

[nf setMaximumFractionDigits:4]その他の観察: 分数の桁に異なる値を使用しようとしました[nf setMaximumFractionDigits:0]。結果は変わりません。小数桁が無視されているようです。ロケールを US に変更すると、小数点以下の桁数ではなく、,が a に変更されるだけです。.

質問printf: -format 文字列を正しく変換するにはどうすればよいNSNumberFormatterですか?

4

1 に答える 1