タイトルで説明したように、1,000,000 (1 mln) や 45,500,000 (45,5 mln) のような巨大な数字を文字列にフォーマットして、この数字の名前の短縮版を表示する方法はありますか? 手動で行うようにというすべてのアドバイスを防ぎたいだけです。私はこれをそのように行う方法を知っています。NSNumberFormatter を使用する簡単な方法があるかどうかを知りたいだけです。
乾杯、
ルカシュ
タイトルで説明したように、1,000,000 (1 mln) や 45,500,000 (45,5 mln) のような巨大な数字を文字列にフォーマットして、この数字の名前の短縮版を表示する方法はありますか? 手動で行うようにというすべてのアドバイスを防ぎたいだけです。私はこれをそのように行う方法を知っています。NSNumberFormatter を使用する簡単な方法があるかどうかを知りたいだけです。
乾杯、
ルカシュ
マニュアルと NSNumberFormatter の使用を組み合わせることをお勧めします。私の考えは、NSNumberFormatter をサブクラス化することです。フォーマットする数値が 1,000,000 を超える場合は、それを分割し、スーパー実装を使用して結果をフォーマットし、最後に「 mln」を追加できます。あなたがあなたのためにできなかった部分だけをしてください。
これを行う NSNumberFormatter サブクラスの大まかなスケッチを次に示します (申し訳ありませんが、書式設定が少しずれています)。
@implementation LTNumberFormatter
@synthesize abbreviationForThousands;
@synthesize abbreviationForMillions;
@synthesize abbreviationForBillions;
-(NSString*)stringFromNumber:(NSNumber*)number
{
if ( ! ( abbreviationForThousands || abbreviationForMillions || abbreviationForBillions ) )
{
return [super stringFromNumber:number];
}
double d = [number doubleValue];
if ( abbreviationForBillions && d > 1000000000 )
{
return [NSString stringWithFormat:@"%@ %@", [super stringFromNumber:[NSNumber numberWithDouble:d / 1000000000]], abbreviationForBillions];
}
if ( abbreviationForMillions && d > 1000000 )
{
return [NSString stringWithFormat:@"%@ %@", [super stringFromNumber:[NSNumber numberWithDouble:d / 1000000]], abbreviationForMillions];
}
if ( abbreviationForThousands && d > 1000 )
{
return [NSString stringWithFormat:@"%@ %@", [super stringFromNumber:[NSNumber numberWithDouble:d / 1000]], abbreviationForThousands];
}
return [super stringFromNumber:number];
}
@end
いいえ、NSNumberFormatter でこれを行う方法はないと思います。あなたはこれであなた自身です。