ホームページ  >  記事  >  バックエンド開発  >  PHP における長整数演算

PHP における長整数演算

不言
不言オリジナル
2018-04-13 10:55:551413ブラウズ

この記事で共有する内容は、PHP における長整数の演算に関するもので、必要な場合は参考にしてください。

PHP には、int の 2 種類の数値しかありません。と float のビット数はシステムに依存し、uint がないため、他のシステムと通信する場合には多くの不便があります。 int がオーバーフローした場合、科学表記法で表現された float に自動的に変換され、小数点以下 15 桁のみが保持されます。後続のデータは四捨五入され、その後のデータ操作に影響を与えます。たとえば、基底変換や演算などについて話すと、すべてがうまくいきません PHP の場合:

int : min~max: -9223372036854775808 ~ 9223372036854775807 (~920 億) float : min~max: -1.79769 31348623E+308 ~ 1.7976931348623E+308 (~1.8 E308)



現時点では、関連する処理に文字列形式の使用を検討する必要があります。数学的な計算を実行する必要がある場合は、BC Math (任意精度数学) 関数を使用する必要があります

。それは自分で確認できます。 PHP マニュアル: http://php.net/manual/zh/function.bcmod.php これは、長整数をバイナリに変換する簡単な例です。Convert 2^128 to binary : PHPの基本変換関数にも最大値制限があるため、ここではshort除算を使用してバイナリに変換し、べき乗を求めるには独自の関数powを使用します


出力結果は以下の通り、明らかに精度が足りず、バイナリが間違っています

正しい表現:

出力結果:

関連する推奨事項:

PHP の PDO データ アクセス抽象化レイヤーに関連する操作

以上がPHP における長整数演算の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。