Сократите строку из NSDecimalNumber с K для тысяч, и M для миллионов и т. Д.
Возможный дубликат:
Преобразовать int в укороченную отформатированную строку
Я хотел бы преобразовать значение NSDecimalNumber
в строку где:
5-6-значные числа используют K для обозначения тысяч и имеют 3 значащие цифры (например, 54 321 ---> 54,3K, 654 321 ---> 65,4K)
Цифры от 7 до 9 цифр используют M для обозначения миллионов и имеют 3 значащие цифры (например, 7 654 321 ----> 7,65 млн, 987 654 321 ---> 9,88 млн)
10-значные числа и выше используют B для обозначения миллиардов и имеют 3 значащие цифры
Любые предложения о том, как это сделать? Благодарю.
(Видел несколько похожих вопросов, но не один для Objective-C/iOS.)
1 ответ
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" и т. Д., Вы все равно можете использовать этот класс в качестве отправной точки.