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 を使用して 10 億を表し、有効数字は 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

「KB」の代わりに「K」、「GB」の代わりに「B」などが必要な場合でも、このクラスを開始点として使用できます。

于 2012-09-27T13:42:56.197 に答える