1

可能重复:
将 int 转换为缩短的格式化字符串

我想将值转换为NSDecimalNumber字符串,其中:

5 到 6 位数字使用 K 表示千位,并有 3 个有效数字(例如 54,321 ---> 54.3K, 654,321 ---> 65.4K)

7到9位数字用M代表百万,有3位有效数字(如7,654,321 ----> 7.65M, 987,654,321 ---> 9.88M)

10位及以上数字用B表示十亿,有效数字3位

关于最好的方法有什么建议吗?谢谢。

(看到了一些类似的问题,但没有针对 Objective-C/iOS 的问题。)

4

1 回答 1

0

FormatterKit可以格式化位、字节、兆字节等。参见 TTTUnitOfInformationFormatter 类。

例子:

将 TTTUnitOfInformationFormatter.h 和 TTTUnitOfInformationFormatter.m 添加到您的项目中。以下示例代码将数字 12345 格式化为字节数:

#import "TTTUnitOfInformationFormatter.h"

NSDecimalNumber *numberOfBytes = [NSDecimalNumber
                                  decimalNumberWithString:@"12345"];
TTTUnitOfInformationFormatter *formatter = [[TTTUnitOfInformationFormatter alloc]
                                            init];
// Set this to NO if you want to show bits instead of bytes.
formatter.displaysInTermsOfBytes = YES;
// Set this to YES if you want 1024 bytes in a KB instead of 1000 bytes.
formatter.usesIECBinaryPrefixesForCalculation = NO;
NSString *formatted = [formatter stringFromNumber:numberOfBytes
                                           ofUnit:TTTByte];
NSLog(@"%@", formatted);

它将打印:

12.35 KB

如果你想要“K”而不是“KB”、“B”而不是“GB”等,你仍然可以使用这个类作为起点。

于 2012-09-27T13:42:56.197 回答