2014-11-01 55 views
1

我已经使用了一个函数来使像123456这样的数字看起来像123.456k。不过,我希望该函数只有前两位小数。所以123456会喜欢123.46k。功能如下所示:减少数字格式化器中的位数Objective-C

- (NSString*)numberWithShortcut:(NSNumber*)number 
{ 
    unsigned long long value = [number longLongValue]; 

    NSUInteger index = 0; 
    double dvalue = (double)value; 

    NSArray *suffix = @[ @"", @"K", @"M", @"B", @"T", @"P", @"E" ]; 

    while ((value /= 1000) && ++index) dvalue /= 1000; 

    NSString *svalue = [NSString stringWithFormat:@"%@%@",[NSNumber numberWithDouble:dvalue], [suffix objectAtIndex:index]]; 

    NSLog(svalue); 

    return svalue; 
} 
+1

不要用'%@'格式化'NSNumber'。不适合不同地区的不同用户。使用'NSNumberFormatter'。您也可以使用它来指定所需的小数位数。 – rmaddy 2014-11-01 22:58:28

+0

更好的方法是使用'NSByteCountFormatter'并消除所有自己的逻辑来添加正确的后缀。 – rmaddy 2014-11-01 22:59:18

+0

“公斤”的正确后缀是“k”,而不是“K”。 “千兆”不应该是“G”吗? – rmaddy 2014-11-01 22:59:55

回答