PHPで高精度の浮動小数点数操作を実行する場合、組み込みの浮動小数点数タイプは、特に財務データまたは科学的計算の正確な計算が必要な場合、通常の浮動小数点数が精度の低下により計算エラーにつながることが多い場合、十分な精度を提供しません。現時点では、PHPのBCMUL関数を使用して、高精度の浮動小数点数の乗算操作を実装できます。 BCMULは、PHPのBCMATH拡張によって提供される関数です。高精度環境で乗算操作を実行し、通常の浮動小数点数の精度を回避できます。
BCMULは、PHPで高精度の浮動小数点数の乗算に使用される関数です。 2つの乗数とオプションの精度パラメーターの3つのパラメーターを受け入れます。精度が指定されていない場合、デフォルトは0ビット精度です。
関数の署名は次のとおりです。
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">bcmul</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$left_operand</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$right_operand</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$scale</span></span><span> = </span><span><span class="hljs-number">0</span></span><span> )
</span></span>
$ left_operand :最初のオペランドは、文字列として渡されました。
$ right_operand :2番目のオペランド、文字列として渡されました。
$スケール:結果の小数点以下の数、デフォルトは0になります。精度を指定する必要がある場合は、このパラメーターを設定できます。
BCMULでは、パラメーターの渡されたパラメーターは文字列型である必要があるため、浮動小数点数を渡す前に文字列形式に変換する必要があります。
123.456789や987.654321などの2つの高精度の浮動小数点数の積を計算し、結果が6小数点以下を保持することを期待するとします。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 2つの高精度フローティングポイント番号を定義します</span></span><span>
</span><span><span class="hljs-variable">$number1</span></span><span> = </span><span><span class="hljs-string">'123.456789'</span></span><span>;
</span><span><span class="hljs-variable">$number2</span></span><span> = </span><span><span class="hljs-string">'987.654321'</span></span><span>;
</span><span><span class="hljs-comment">// 使用 bcmul 製品を計算します,予約する 6 位小数</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcmul</span></span><span>(</span><span><span class="hljs-variable">$number1</span></span><span>, </span><span><span class="hljs-variable">$number2</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>);
</span><span><span class="hljs-comment">// 出力結果</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"製品はです: "</span></span><span> . </span><span><span class="hljs-variable">$result</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
上記の例では、 BCMUL関数を使用して2つの浮動小数点数の積を計算し、結果が6桁の場所を保持していることを指定します。結果は非常に正確であり、通常の浮動小数点計算の精度の喪失の問題を回避します。
<span><span><span class="hljs-section">製品はです: 121931.627778</span></span><span>
</span></span>
実際のアプリケーションでは、異なるシナリオに従って異なる10進精度を設定する必要がある場合があります。たとえば、財務計算では、通貨額を高い精度で計算する必要がある場合があります。
2つの量の積を計算し、2つの小数点を保持する必要があるとします(通常は通貨計算に使用)。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 2つの量を定義します</span></span><span>
</span><span><span class="hljs-variable">$amount1</span></span><span> = </span><span><span class="hljs-string">'99.99'</span></span><span>;
</span><span><span class="hljs-variable">$amount2</span></span><span> = </span><span><span class="hljs-string">'88.88'</span></span><span>;
</span><span><span class="hljs-comment">// 使用 bcmul 製品を計算します,予約する 2 位小数</span></span><span>
</span><span><span class="hljs-variable">$totalAmount</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcmul</span></span><span>(</span><span><span class="hljs-variable">$amount1</span></span><span>, </span><span><span class="hljs-variable">$amount2</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-comment">// 出力結果</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"合計金額はです: "</span></span><span> . </span><span><span class="hljs-variable">$totalAmount</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
この例では、 99.99と88.88の2つの量を掛けて、結果を通貨計算のニーズを満たすために正確な2進数に設定します。
<span><span><span class="hljs-section">合計金額はです: 8891.21</span></span><span>
</span></span>
PHPの組み込みフローティングポイント数操作は、特に高精度の小数計算が必要な場合、フローティングポイントの精度の損失が誤った結果につながる可能性がある場合、正確な数値計算には適していません。 BCMULは、大量の計算または高精度要件の下で正確な結果が得られるようにすることができるソリューションを提供します。
具体的には、 BCMUL関数の利点には次のものが含まれます。
高精度:精度の浮動小数点数の計算を実行でき、必要に応じて精度をカスタマイズできます。
精度の損失はありません: BCMULは文字列を使用して数値を処理するため、浮動小数点計算の精度損失の問題を回避します。
広く使用されている:非常に高い精度を必要とするファイナンス、科学コンピューティング、エンジニアリングコンピューティングなどのシナリオに適しています。
PHP開発では、 BCMULは非常に重要な高精度の浮動小数点数の乗算ツールです。特に、財務計算や科学的計算などの高精度を必要とするアプリケーションシナリオでは、浮動小数点精度の損失の問題を効果的に回避できます。 PHPプログラマーは、 BCMULの使用に習得し、熟練していることにより、高精度のコンピューティングを含むビジネスニーズをよりよく処理し、プログラムの信頼性と精度を向上させることができます。