次のような番号の操作を処理するにはどうすればよいですか:48534588306961133067968196965257961415756656521818848750723547477673457670019632882524164647651492025728980571833579341743988603191694784406703
私がこれまで試したことは何も機能しませんでした...unsignedlong、longlongなど...
必要なのは、任意の長さの整数に対する操作をサポートするライブラリです。しかし、私が調べたところ、Objective-C で書かれたそのようなライブラリはありません。
それにもかかわらず、Objective-C は C のスーパーセットであるため、幸運です。これにより、このやや時代遅れの SO の質問への回答で説明されているような C ライブラリを使用できるようになります。
また、Clang コンパイラは C++ をサポートし、Objective-C と C++ コードの組み合わせをサポートしているため、おそらくbig intのようなものを使用できます。
組み込み型のどれも、あなたの例と同じ桁数の数字を表すのに十分な大きさに近いものではないことに注意してください。unsigned long long
負の数が必要ない場合、使用可能な最大の整数型は です。そのサイズは 8 バイト/64 ビットで、範囲は0-18446744073709551615
、または最大 20 桁です。
代わりにJKBigIntegerを使用できます。これは、LibTomMath C ライブラリの Objective-C ラッパーです。そして、本当に使いやすく、理解しやすいです。
あなたの場合:
JKBigInteger *int = [[JKBigInteger alloc] initWithString:@"48534588306961133067968196965257961415756656521818848750723547477673457670019632882524164647651492025728980571833579341743988603191694784406703"];
ここで試すことができます:http://gmplib.org/
GMP は、符号付き整数、有理数、および浮動小数点数を操作する任意精度演算用の無料ライブラリです。GMP が実行されているマシンで使用可能なメモリによって暗示されるものを除いて、精度に実質的な制限はありません。GMP には豊富な機能セットがあり、機能には通常のインターフェイスがあります。