3

タイトルで説明したように、1,000,000 (1 mln) や 45,500,000 (45,5 mln) のような巨大な数字を文字列にフォーマットして、この数字の名前の短縮版を表示する方法はありますか? 手動で行うようにというすべてのアドバイスを防ぎたいだけです。私はこれをそのように行う方法を知っています。NSNumberFormatter を使用する簡単な方法があるかどうかを知りたいだけです。

乾杯、

ルカシュ

4

3 に答える 3

6

マニュアルと NSNumberFormatter の使用を組み合わせることをお勧めします。私の考えは、NSNumberFormatter をサブクラス化することです。フォーマットする数値が 1,000,000 を超える場合は、それを分割し、スーパー実装を使用して結果をフォーマットし、最後に「 mln」を追加できます。あなたがあなたのためにできなかった部分だけをしてください。

于 2011-05-05T23:02:35.693 に答える
4

これを行う 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
于 2012-02-02T11:47:47.077 に答える
1

いいえ、NSNumberFormatter でこれを行う方法はないと思います。あなたはこれであなた自身です。

于 2011-05-05T21:03:00.970 に答える