無限精度の整数電卓

 非常に大きな桁数の整数計算を行える電卓です。今のところ2つの数の和、差、積、商および余り、累乗を求めることができます。

 無限精度整数電卓 ver 0.05

 といっても、あまり大きすぎる数値は危険です。コンピュータの性能にもよりますが掛け算の場合数千桁、足し算、引き算の場合10万桁を限度にした方がいいかもしれません(無限は嘘)。

 計算にかかる時間は各スクリプトの処理速度を参考にしてください。

機能の説明

和、差

 和は「A + B」ボタン、差は「A - B」に対応します。

 「A * B」ボタンに対応します。

商、余り

 「A / B」ボタンは商、「A % B」ボタンは余りに対応します。また「A / B, A % B」ボタンはAをBで割った商と余りが同時に表示されます。3つのコンマの後にある数値が余りを示します。

累乗

 「A ^ B」ボタンはABを意味します。ただし計算量が大きいので足し算や掛け算などと同じ調子で扱うと大変です。せいぜい数桁までの計算が限度だと考えてください。参考までにInternet Explorerの場合、底Aは7桁、指数Bは3桁までならスクリプトを中断するかのダイアログが出ないようです(ちなみに220000はこのメッセージが出ずに計算することができました)。

階乗

 「A!」ボタンに対応します。計算量が大きいので大きくてもA = 1000前後だと考えるのがいいかもしれません。

順列

 「P(A, B)」ボタンはAPB(順列)を意味します。

組み合わせ

 「C(A, B)」ボタンはACB(組み合わせ)を意味します。

infmath.jsの説明

 計算に必要な関数は全てinfmath.jsに入れてあります。このライブラリでは数は5桁ごとに区切った配列として扱われています。

 例えば20050815190648という数は5桁ごとに区切り、小さい桁から配列に治めた「[90648, 8151, 2005]」という形で取り扱われます。また、負の数-20050815190648は「[-90648, -8151, -2005]」という形で取り扱われています。

numArray(string)
stringは十進の整数の文字列です。引数の整数を5桁ごとに区切った配列を返します。
arrayToString(n)
nは数を5桁ごとに区切って代入した配列です。これを十進の整数の文字列に変換して返します。
InfAdd(n1, n2)
n1n2は整数の配列です。n1n2の和を配列で返します。
InfSub(n1, n2)
n1n2は整数の配列です。n1n2の差を配列で返します。
InfMult(n1, n2)
n1n2は整数の配列です。n1n2の積を配列で返します。
InfDivMod(n1, n2)
n1は整数、n2は0以外の整数の配列です。要素数2の配列を返します。返り値の配列、添え字0の要素はn1n2で割った商、添え字1の要素はn1n2で割った余りの配列です。
InfDiv(n1, n2)
n1は整数、n2は0以外の整数の配列です。n1n2で割った商を配列で返します。
InfMod(n1, n2)
n1は整数、n2は0以外の整数の配列です。n1n2で割った余りを配列で返します。
InfPow(n1, n2)
n1n2は整数の配列です。n1n2乗を配列で返します。
InfFact(n)
nは正の整数の配列です。n1の階乗を配列で返します。
InfPerm(n1, n2)
nn1 >= n2の関係にある正の整数の配列です。順列n1Pn2を配列で返します。
InfComb(n1, n2)
nn1 >= n2の関係にある正の整数の配列です。組み合わせn1Cn2を配列で返します。
InfAbs(n)
nは整数の配列です。nの絶対値を配列で返します。
InfReverse(n)
nは整数の配列です。nの符号を逆転し、配列で返します。
InfComp(n1, n2)
n1n2は整数の配列です。n1n2を比較し、n2よりn1のほうが大きければ1、小さければ-1、同じであれば0を返します。
copyNum(n)
nは整数の配列です。nをコピーした新しい配列を返します。

 無限精度整数電卓 ver 0.05ではテキストエリアに入力した数をnumArray関数に変換してから他の関数で計算を行い、その後arrayToString関数で一つの整数の文字列に戻し、別のテキストエリアに表示するという形を取っています。

動作確認ブラウザ [説明]
Internet Explorer 6.0 Firefox 1.0 Netscape 7.1 Opera 7.5