2016-11-15 4 views
0

私はiOSプロジェクトで大きな整数値を扱っています。すべての数値を文字列に保持しているので、変換に関する問題はありません。しかし、文字列にNSNumberFormatterを適用すると問題に直面しています。 40+桁の文字列があるとします。 私のコードは次のようである:iOSの大きな整数NSNumberFormatterが機能しない

// lastString_Capital is my string of all digit. let it 55252585858585858552525251232581285224 (38+) 
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[numberFormatter setMaximumFractionDigits:2]; 
NSString *text = [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedLongLong:[lastString_Capital longLongValue]]]; 

私は範囲(numberWithUnsignedLongLongは)私の現在の数の制限を超えていることを知っています。この長い数字を形作るための解決策が必要です。

ありがとうございます。

答えて

1

NSDecimalNumberを使用してください。値が大きすぎてlong long値ではありません。

NSDecimalNumber *bigNum = [NSDecimalNumber decimalNumberWithString:lastString_Capital]; 
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[numberFormatter setMaximumFractionDigits:2]; 
NSString *text = [numberFormatter stringFromNumber:bigNum]; 
+0

55252585858585858552525251232581285224(38桁)この番号を手伝ってください。これでさらに数字を入力すると、最後にすべてゼロが追加されます。私はもっ​​と大きな数字の形式が必要かもしれません。 –

+0

NSDecimalNumberは、最大38桁の精度しかサポートしません。これは、フォーマットすることができる最高のものです。 Appleより提供されるCocoa APIは、これ以上の精度を得ることはできません。 – rmaddy

+0

はい。私はあなたと同じ考えをしていた。返信ありがとう。 –

関連する問題