就像標題中所述,是否有任何方法可以將1,000,000(1,500n)或45,500,000(45,5 mln)等巨大數字格式化爲字符串以顯示此數字名稱的縮寫版本。我只是想阻止所有的建議手動。我知道如何做到這一點。我只是想知道是否有更簡單的方法使用NSNumberFormatter。NSNumberFormatter將1,000,000顯示爲1mln等
乾杯,
盧卡斯
就像標題中所述,是否有任何方法可以將1,000,000(1,500n)或45,500,000(45,5 mln)等巨大數字格式化爲字符串以顯示此數字名稱的縮寫版本。我只是想阻止所有的建議手動。我知道如何做到這一點。我只是想知道是否有更簡單的方法使用NSNumberFormatter。NSNumberFormatter將1,000,000顯示爲1mln等
乾杯,
盧卡斯
我會建議手動和使用NSNumberFormatter的組合。我的想法是子類NSNumberFormatter。如果要格式化的數字大於1,000,000,則可以對其進行分割,使用超級實現格式化結果,並在末尾附加「mln」。只做你不能爲你做的部分。
不,我不認爲有一種方式與NSNumberFormatter做到這一點。你對此自行決定。
這裏是一個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