ホームページ  >  記事  >  バックエンド開発  >  PHP が高精度の計算関数を処理する方法

PHP が高精度の計算関数を処理する方法

小云云
小云云オリジナル
2018-03-17 10:21:282029ブラウズ

この記事では、主に PHP が高精度の計算関数を処理する方法について説明します。お役に立てれば幸いです。

方法 1:

PHP は、文字列形式

bcadd — 加算
bccomp — 比較
bcp — 位相除算
で記述される、任意のサイズと精度の数値をサポートする任意精度の数学計算用のバイナリ計算機 (Binary Calculator) を提供します。 bcmod — 剰余を求める
bcmul — 乗算
bcpow — べき乗
bcpowmod — 最初にべき乗してから剰余を求める
bcscale — すべての関数の小数点以下の桁精度を設定する
bcsqrt — 平方根を求める
bcsub — 減算

方法 2:

最近、モールで WeChat 経由で支払った注文の料金が 1 ペニー安くなることがよくありました。調査したところ、PHP の浮動小数点演算の精度が原因でした。 . ニアオ兄さんのボルグに詳しい説明があります。 http://www.laruence.com/2013/03/26/2884.html,

10 進数を 2 進数で表すと、0.58 は 2 進数では無限に長い値になります


0.58 の 2 進数表現は基本的に (52 ビット) です。 0010100011110101110000101000111101011100001010001111

0.57 のバイナリ表現は基本的に: 00100011110101110000101000111101011100001010 11101

浮動小数点数(64ビット倍精度)に変換

0.58 -> 0.57999999999999996

0.57 -> 0.5699999999999995

0.58*100 = 57.9 99999999 ( int)(0.58*100) = 57

解決策:

(int)((0.58*1000)/10) = 58

関連する推奨事項:

MySQL の一般的な日付と計算関数の例を説明

PHP の確率計算関数

PHP で関数の実行時間を計算する方法_PHP チュートリアル

以上がPHP が高精度の計算関数を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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