22 文字の長さの整数を検証する必要があります。その数を割り、商と残りの占いを得る必要があります。しかし、モジュロ関数に送信すると、7.04406000774059e + 21が返されます
labas = modulo(7044060007740589212932, 97);
function modulo (divident, divisor){
alert(divident);
}
jsで大きな数を処理するためのライブラリがいくつかあります。
割る(「神」ではない)と残り(「悪い部分」ではない)を意味していると思います。
変なサイコロを振って乱数 (8233) を取得しました。これをいくつかの例で使用します。
* 8233 を 8 で割った余りは 1 8233 = (8 * 1029) + 1
* 8233 を 9 で割った余りは 7 8233 = (9 * 914) + 7
* 8233 を 10 で割った余りは 3 8233 = (10 * 823) + 3
* 8233 を 11 で割った余りは5.8233 = (11 * 748) + 5
あなたの質問に答えるには:
JavaScript で数字を扱うときは、最初の 15 桁または 16 桁だけが有効であることを覚えておく必要があります。数値の桁数が多い場合、通常、結果は正確ではなくなります。
あなたの例では、この番号を使用しています: 7044060007740589212932
JavaScript はその番号を正確に処理できません。それができる最善のことは7044060007740589735936
、523004
高すぎることです。しかし、あなたは望ん7044060007740589735936
でいません7044060007740589212932
。
回避策は次のとおりです。数字としてではなく、文字列
として番号を保持してください。
次に、文字列を真ん中で 2 つの部分に分けます。これで
、それぞれ 11 桁の文字列が 2 つできました。
次に、これを行います:番号を取得します番号を取得します
"7044060007740589212932"
"70440600077"
"40589212932"
parseInt("70440600077", 10)
70440600077
(70440600077 % 97)
36
(97 * 726191753) + 36 = 70440600077
次に、これを実行して
ください36
:
(36 + "40589212932")
gets you the string "3640589212932"
(数字と文字列を足すと文字列連結が行われます)
parseInt("3640589212932", 10)
gets you number 3640589212932
(3640589212932 % 97)
gets you number が得られます0
。97 * 37531847556 = 3640589212932
正確に注意してください。
72619175300000000000 * 97 = 7044060004100000000000
37531847556 * 97 = 3640589212932
==================== ======================
72619175337531847556 * 97 = 7044060007740589212932
そして、そこに行きます。