現在の位置: ホーム> 最新記事一覧> BCSUBとBCMULを使用して利益を計算して正確性を確保する方法は?

BCSUBとBCMULを使用して利益を計算して正確性を確保する方法は?

gitbox 2025-08-19

PHPで正確な数学操作を実行する場合、従来の浮動小数点計算はしばしば精度の損失を引き起こします。特に、通貨や利益などの分野を扱う場合、正確性の問題は特に重要です。 PHPは、非常に強力な数学的拡張ライブラリ-BCMATH(大きな数字)を提供します。 BCSUBBCMULは、BCMATHライブラリの2つの機能であり、利益を計算するときに高い精度を確保するために一緒に使用できます。

1. BCSUBBCMULを理解してください

  • bcmul(string $ left_operand、string $ right_operand、int $ scale = 0) :2つの数値の乗算を計算し、結果を返すために小数点以下の場所の数を指定するために使用されます。 $ left_operand$ right_operandは、乗算操作を実行する2つのオペランドです。 $スケールは、小数点後の精度を制御するために使用され、デフォルトは0です。

  • bcsub(string $ left_operand、string $ right_operand、int $ scale = 0) :2つの数値の減算を計算するために使用され、結果を返す小数点以下の数を指定できます。 $ left_operandは減算され、 $ right_operandは減算され、 $スケールは小数点以下の場所の数を指定するために使用されます。デフォルトは0です。

2。BCSUBとBCMUL介して利益を計算する方法

利益計算の過程で、多くの場合、追加、減算、乗算などの操作を実行する必要があります。利益を計算するときに最初に売り上げを計算し、次に売り上げからコストを差し引き、最終的に利益を得る必要があるとします。

たとえば、企業が製品を販売する場合、価格は100元、生産コストは60元、税金は売上の10%です。次に、利益を計算する手順は次のように分解できます。

  1. 販売の税金の計算:税金は売上の10%です。BCMUL使用して税金を計算します。

  2. 利益の計算:利益は販売です。生産コストと税金、つまり利益=売上 - コスト - 税金です。ここでは、 BCSUBを使用して、最初にコストを減らし、次に税金を減らして結果の正確性を確保します。

3。サンプルコード

<span><span><span class="hljs-meta">&lt;?php</span></span><span>

</span><span><span class="hljs-comment">// 精度を設定します</span></span><span>
</span><span><span class="hljs-variable">$scale</span></span><span> = </span><span><span class="hljs-number">2</span></span><span>;  </span><span><span class="hljs-comment">// 小数点以下の場所を2つ保管してください</span></span><span>

</span><span><span class="hljs-comment">// 製品の価格とコスト</span></span><span>
</span><span><span class="hljs-variable">$sales_price</span></span><span> = </span><span><span class="hljs-string">'100.00'</span></span><span>;  </span><span><span class="hljs-comment">// 販売価格</span></span><span>
</span><span><span class="hljs-variable">$cost_price</span></span><span> = </span><span><span class="hljs-string">'60.00'</span></span><span>;    </span><span><span class="hljs-comment">// コスト価格</span></span><span>

</span><span><span class="hljs-comment">// 税金と手数料を計算します(税率はです10%)</span></span><span>
</span><span><span class="hljs-variable">$tax_rate</span></span><span> = </span><span><span class="hljs-string">'0.10'</span></span><span>;  </span><span><span class="hljs-comment">// 10%税率</span></span><span>
</span><span><span class="hljs-variable">$tax</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcmul</span></span><span>(</span><span><span class="hljs-variable">$sales_price</span></span><span>, </span><span><span class="hljs-variable">$tax_rate</span></span><span>, </span><span><span class="hljs-variable">$scale</span></span><span>);  </span><span><span class="hljs-comment">// 販売価格 * 税率</span></span><span>

</span><span><span class="hljs-comment">// 利益を計算します</span></span><span>
</span><span><span class="hljs-variable">$profit</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcsub</span></span><span>(</span><span><span class="hljs-variable">$sales_price</span></span><span>, </span><span><span class="hljs-variable">$cost_price</span></span><span>, </span><span><span class="hljs-variable">$scale</span></span><span>);  </span><span><span class="hljs-comment">// 販売価格 - コスト価格</span></span><span>
</span><span><span class="hljs-variable">$profit_after_tax</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcsub</span></span><span>(</span><span><span class="hljs-variable">$profit</span></span><span>, </span><span><span class="hljs-variable">$tax</span></span><span>, </span><span><span class="hljs-variable">$scale</span></span><span>);    </span><span><span class="hljs-comment">// 利益 - 税金</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 class="hljs-subst">$sales_price</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"料金: <span class="hljs-subst">$cost_price</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"税金: <span class="hljs-subst">$tax</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"利益: <span class="hljs-subst">$profit_after_tax</span></span></span><span>\n";

</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4。コード解析

  • 精度の設定$ scale = 2を設定することにより、結果が2つの小数点を保持することを指定します。これにより、計算の各ステップが高精度を維持し、浮動小数点数の操作エラーを回避できます。

  • 税の計算BCMUL関数を使用して税率を計算します。これは、売上に税率を掛け、正確な小数の結果を返します。ここでの税率は0.10であり、これは税の10%を意味します。

  • 利益計算:利益を計算するとき、最初にBCSUB関数を使用して販売からコストを減らし、次に税金と手数料を差し引き、最終的に正確な利益を得ます。

5.なぜBCSUBBCMULを使用するのか

従来のフローティングポイント操作では、通貨などの高精度操作を計算するときに、いくつかの精度損失の問題に遭遇することがよくあります。例えば:

 <span><span><span class="hljs-variable">$price</span></span><span> = </span><span><span class="hljs-number">100.00</span></span><span>;
</span><span><span class="hljs-variable">$cost</span></span><span> = </span><span><span class="hljs-number">60.00</span></span><span>;
</span><span><span class="hljs-variable">$tax</span></span><span> = </span><span><span class="hljs-variable">$price</span></span><span> * </span><span><span class="hljs-number">0.10</span></span><span>;
</span><span><span class="hljs-variable">$profit</span></span><span> = </span><span><span class="hljs-variable">$price</span></span><span> - </span><span><span class="hljs-variable">$cost</span></span><span> - </span><span><span class="hljs-variable">$tax</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$profit</span></span><span>;
</span></span>

この動作方法は、浮動小数点数の精度制限により、不正確な結果につながる可能性があります。 BCSUBBCMULを使用すると、複雑な操作でも精度が失われないようにすることができます。

6。概要

PHPでは、 BCSUBBCMULは、高精度、課税、および高精度を必要とするその他のシナリオを含むシナリオでの使用に特に適した高精度数学計算の強力なツールです。精度パラメーターを合理的に設定することにより、計算の各ステップに丸めエラーがないことを確認でき、それにより誤った利益計算を回避できます。