5

必要に応じて %g が小数のみを表示することがわかりました。数値が整数の場合、末尾の .000 は追加されないため、問題ありません。しかし、たとえば 1.12345 の場合、答えを 1.123 に短くしたいのです。そして、1.000 の場合、%g が既に行っているように、1 のみを表示したいと考えています。

文字列に %.3g を指定しようとしましたが、うまくいきません。誰かが答えを持っていれば、私は感謝します!

4

3 に答える 3

11

IEEE仕様を介して「フォーマット文字列」の機能を確認しましたが、理解しているように、希望する動作は不可能です。

NSNumberFormatterクラスを使用することをお勧めします。私はあなたの希望する行動に一致する例を書きました。私はそれが役立つことを願っています:

NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
[numberFormatter setDecimalSeparator:@"."];
[numberFormatter setGroupingSeparator:@""];
NSString *example1 = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:123456.1234]];
NSLog(@"%@", example1);
NSString *example2 = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:123456.00]];
NSLog(@"%@", example2);
于 2011-09-02T15:16:02.443 に答える
2

NSLog(@"%.3g", 1.12345) に対して何が得られますか?

私はいくつかのテストを行いましたが、あなたの質問を理解しているので、あなたは正しい方向に進んでいます。これらは私の結果です:

NSLog(@"%g", 1.000000);    => 1
NSLog(@"%g", 1.123456789);  => 1.12346
NSLog(@"%.1g", 1.123456789);  => 1
NSLog(@"%.2g", 1.123456789);  => 1.1
NSLog(@"%.3g", 1.123456789);  => 1.12
NSLog(@"%.4g", 1.123456789);  => 1.123

必要なものを取得するには、@"%.4g" を使用します。

于 2011-09-01T16:54:13.510 に答える