13

unsigned long intを、3 桁ごとにコンマでフォーマットされ、小数点も末尾のゼロもない NSStringに変換したいと考えています。NSNumberFormatter を使用してコンマを問題なく NSString に入れることができますが、何らかの理由で小数点とゼロを取り除くことができません。

これは私のコードです:

NSNumberFormatter *fmtr;
unsigned long int intToBeDisplayed;
intToBeDisplayed = 1234567890;
fmtr = [[[NSNumberFormatter alloc] init] autorelease];
[fmtr setUsesGroupingSeparator:YES];
[fmtr setGroupingSeparator:@","];
[fmtr setGroupingSize:3];
[fmtr setAlwaysShowsDecimalSeparator:NO];
NSLog([fmtr stringFromNumber:[NSNumber numberWithUnsignedLong:intToBeDisplayed]]);

ログには「1,234,567,890.00」が表示され、適切にカンマが追加されますが、残念ながら不要な「.00」も追加されます。unsigned long intの代わりにintを使用してこのコンストラクトを試してみましたが、整数値は小さく、さまざまなブログの他のコンストラクトはすべて役に立ちませんでした。NSString から小数点と末尾のゼロを取得する方法についての提案に非常に感謝しています。

私は Objective-C の初心者であり、この問題を解決しようとして目のかすみ症候群に関して古参になっていますが、Objective-C で学んだ小さな教訓と成功が大きな喜びの源であるその段階にいます。 .

4

4 に答える 4

31

setMaximumFractionDigits を使用して分数を切り捨てることもできます。

unsigned long int intToBeDisplayed = 1234567890;
NSNumber *longNumber = [NSNumber numberWithUnsignedLong:intToBeDisplayed];

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setUsesGroupingSeparator:YES];
[formatter setGroupingSeparator:@","];
[formatter setGroupingSize:3];
[formatter setMaximumFractionDigits:0];

NSString *formattedNumber = [formatter stringFromNumber:longNumber];
NSLog(@"The formatted number is %@", formattedNumber);

結果は次のとおりです。

フォーマットされた数値は 1,234,567,890 です

これは iOS 2.0 以降で動作します。

于 2011-07-05T21:09:56.303 に答える
0

これにより、小数点と末尾のゼロが削除されます。

[fmtr setPositiveFormat:@"#"]

および/または

[fmtr setNegativeFormat:@"#"]
于 2013-10-30T22:47:54.377 に答える
-1

これで治ります!

 [fmtr setGeneratesDecimalNumbers:NO];

出力:

2011-03-31 18:40:45.645 Stephen[41552:903] 1,234,567,890
于 2011-03-31T22:41:03.630 に答える