【发布时间】:2014-11-01 22:56:28
【问题描述】:
我使用了一个函数来使诸如 123456 之类的数字看起来像 123.456k。但是我希望函数只有前两位小数。所以 123456 想要 123.46k。函数如下所示:
- (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;
}
【问题讨论】:
-
不要将
NSNumber格式化为%@。它不适合不同地区的不同用户。使用NSNumberFormatter。您还可以使用它来指定所需的小数位数。 -
更好的是使用
NSByteCountFormatter并消除您自己的所有逻辑以添加正确的后缀。 -
“kilo”的正确后缀是“k”,而不是“K”。 “B”不应该是“G”的“G”吗?
标签: ios objective-c nsstring format nsnumber