Objective-Cでプログラムで3桁の数の8桁の数値の結果を計算するのに問題があります。Objective-Cで実際に大きな数値を累乗する方法はありますか?
などの数字を使用してください。数字は1862 digits in lengthになります。
私は単純に試してみました:
unsigned long long result = 1;
for (int i = 0; i < 258; i++)
result *= 16468920;
を...しかしresult
出力0
。
それから私が試した:
long double result = powl(16468920, 258);
を...しかしresult
出力inf
。 finding out about NSDecimal後
、私はこれを試してみました:
NSDecimalNumber *number = [[NSDecimalNumber alloc] initWithInt:16468920];
NSDecimalNumber *result = [number decimalNumberByRaisingToPower:258];
を...しかし、このコードはNSDecimalNumberOverflowException
が発生しますので、私が試した、
NSDecimal result;
NSDecimal number = [[NSDecimalNumber decimalNumberWithString:@"16468920"] decimalValue];
NSDecimalPower(&result, &number, 258, NSRoundPlain);
を...しかしresult
出力NaN
。
私は行くべきであるとして、どの方向に任意のポインタ?
ここに記載されているライブラリの1つ - > http://en.wikipedia.org/wiki/Arbitrary-precision_arithmeticを使用する必要があります。なぜなら、その数字を普通の2進数として保存するのは、神がどれだけ多くビット – borrrden
あなたはあなたが一度それを得ると、あなたはこの数字で何ができるかについて考える必要があります。 (およそ5610ビット、BTW、または701バイト) –