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

回答