【问题标题】:Reduce the number of digits in Number Formatter Objective-C减少 Number Formatter Objective-C 中的位数
【发布时间】: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


【解决方案1】:

使用数字格式化程序

NSNumberFormatter *formatter;
[formatter setMaximumFractionDigits:2];

以上只是你可以用它做的一个例子。查看 Apple 的文档了解更多信息:

https://developer.apple.com/LIBRARY/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNumberFormatter_Class/index.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多