ホームページ >バックエンド開発 >PHPチュートリアル >PHP のべき乗剰余演算で大きな数値を正確に処理するにはどうすればよいですか?
PHP でのべき乗剰余演算のための大きな数値の処理
べき乗剰余演算は、フェルマー素数検定などのさまざまな数学的アプリケーションで不可欠な演算です。ただし、PHP で大きな数値を扱うと、課題が生じる可能性があります。
PHP で 2 つの大きな数値を乗算すると、結果が自動的に float にキャストされます。これは汎用演算には便利ですが、モジュラー値を扱う場合には問題になります。
$x = 62574 * 62574; var_dump($x); // float(3915505476) ... correct var_dump($x % 104659); // int(-72945) ... unexpected
PHP のモジュロ演算子は、float データ型が大きな整数を正確に表さないため、誤った結果を返します。
解決策: GMP ライブラリ
この問題を解決するには、 PHP の GMP (GNU Multi-Precision Library) 拡張機能。 GMP は、大きな数値を扱うために特別に設計された関数とデータ型を提供します。
Composer パッケージ マネージャーを使用して GMP をインストールできます:
composer require gmp
例:
use GMP; $x = GMP::mul(62574, 62574); var_dump($x); // gmp("3915505476") ... correct var_dump(GMP::mod($x, 104659)); // gmp("73714") ... correct
GMP は、乗算、加算、比較、剰余演算など、大きな数値を扱うための幅広い関数を提供します。これらの関数により、最も広範な計算でも正確な結果が保証されます。
以上がPHP のべき乗剰余演算で大きな数値を正確に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。