Aktueller Standort: Startseite> Neueste Artikel> Wie benutze ich BCMUL in Kombination mit BCDIV für hochpräzise Berechnungen? Vollständige Erklärung der praktischen Fall

Wie benutze ich BCMUL in Kombination mit BCDIV für hochpräzise Berechnungen? Vollständige Erklärung der praktischen Fall

gitbox 2025-06-19

Beim PHP können wir uns im Umgang mit hochpräzisen Berechnungen auf einige spezielle Funktionsbibliotheken verlassen, dass BCMath einer davon ist. BCMATH bietet mehrere Funktionen für die Behandlung hochpräziser Gleitkomma- und ganzzahliger Operationen, einschließlich BCMUL () und BCDIV () , die für die hohe Präzisionsmultiplikations- bzw. Divisionsberechnungen verwendet werden.

In diesem Artikel werden wir zeigen, wie BCMUL () und BCDIV () verwendet werden, um durch praktische Fälle hochpräzise Berechnungen zu erzielen. Das Verständnis ihrer grundlegenden Nutzung und Vorteile ist ein wichtiger Schritt, um die Genauigkeitsanforderungen der Entwickler zu verbessern.

1. Warum BCMath -Erweiterung wählen?

Obwohl PHP -Standard -Schwimmpunktnummertyp ( Float ) die meisten numerischen Vorgänge ausführen kann, kann er einen Genauigkeitsverlust verursachen, wenn sie sich mit sehr großen oder sehr kleinen Werten auszurichten. Um die Ergebnisse von hoher Präzisionsoperationen zu gewährleisten, bietet die BCMATH- Erweiterung eine numerische Berechnungsunterstützung für willkürliche Genauigkeit, sodass wir genaue Berechnungen durchführen können, ohne durch herkömmliche Datentypen eingeschränkt zu werden.

2. Einführung in die Funktion bcmul ()

BCMUL () ist eine Multiplikationsfunktion in der BCMath- Erweiterung, mit der zwei hochpräzisen Zahlen multipliziert werden. Im Gegensatz zu herkömmlichen Multiplikationsvorgängen können Sie BCMUL () die Genauigkeit der Berechnung festlegen, um Ergebnisfehler aufgrund unzureichender Genauigkeit zu verhindern.

Funktionsprototyp:

 <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><span class="hljs-keyword">string</span></span><span>
</span></span>
  • $ links_operand : Der erste Operand, der als String eingegeben wurde.

  • $ Right_operand : Der zweite Operand, ebenfalls in einer Zeichenfolge übergeben.

  • $ scale : optionaler Parameter, Angabe der Genauigkeit nach dem Dezimalpunkt.

Beispiel:

 <span><span><span class="hljs-variable">$num1</span></span><span> = </span><span><span class="hljs-string">'123.456789'</span></span><span>;
</span><span><span class="hljs-variable">$num2</span></span><span> = </span><span><span class="hljs-string">'987.654321'</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">$num1</span></span><span>, </span><span><span class="hljs-variable">$num2</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>);  </span><span><span class="hljs-comment">// Das Multiplikationsergebnis ist erhalten6Dezimal</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>;  </span><span><span class="hljs-comment">// Ausgabe 121931.439820</span></span><span>
</span></span>

3. Einführung in die Funktion BCDIV ()

BCDIV () ist eine Divisionsfunktion in der BCMATH -Erweiterung, die zur Durchführung von Abteilungsberechnungen zu zwei hochpräzisen Zahlen verwendet wird. Es unterstützt auch die Einstellung der Berechnungsgenauigkeit, um die Genauigkeit der Ergebnisse sicherzustellen.

Funktionsprototyp:

 <span><span><span class="hljs-title function_ invoke__">bcdiv</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$dividend</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$divisor</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><span class="hljs-keyword">string</span></span><span>
</span></span>
  • $ Dividende : Dividende, als Zeichenfolge verabschiedet.

  • $ Divisor : Divisor, passieren auch in einer Schnur.

  • $ scale : optionaler Parameter, Angabe der Genauigkeit nach dem Dezimalpunkt.

Beispiel:

 <span><span><span class="hljs-variable">$num1</span></span><span> = </span><span><span class="hljs-string">'123.456789'</span></span><span>;
</span><span><span class="hljs-variable">$num2</span></span><span> = </span><span><span class="hljs-string">'9.87654321'</span></span><span>;

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcdiv</span></span><span>(</span><span><span class="hljs-variable">$num1</span></span><span>, </span><span><span class="hljs-variable">$num2</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>);  </span><span><span class="hljs-comment">// Abteilungsergebnisse werden beibehalten6Dezimal</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>;  </span><span><span class="hljs-comment">// Ausgabe 12.500000</span></span><span>
</span></span>

4. Praktischer Fall: Preisberechnung mit hoher Präzision

In der tatsächlichen Entwicklung, insbesondere im Finanzfeld oder in der E-Commerce-Plattformen, sind häufig hochpräzisen Preisberechnungen erforderlich. Angenommen, wir müssen den Gesamtpreis des Produkts, den ermäßigten Preis und die Steuern berechnen. Um den Betragsfehler aufgrund einer schwimmenden Berechnunggenauigkeit zu vermeiden, können wir BCMUL () und BCDIV () verwenden, um diese Vorgänge zu behandeln.

Anforderung Beschreibung:

  • Einheitspreis des Produkts: 99,99

  • Menge: 10

  • Rabatt: 0,85 (85% Rabatt)

  • Steuersatz: 0,1 (10% Steuersatz)

Wir werden den Gesamtpreis des Artikels, den ermäßigten Preis und den endgültigen Preis nach steuerlicher Sequenzerhöhung berechnen.

Implementierungscode:

 <span><span><span class="hljs-comment">// Produkteinheit Preis und Menge</span></span><span>
</span><span><span class="hljs-variable">$price</span></span><span> = </span><span><span class="hljs-string">'99.99'</span></span><span>;
</span><span><span class="hljs-variable">$quantity</span></span><span> = </span><span><span class="hljs-string">'10'</span></span><span>;

</span><span><span class="hljs-comment">// Berechnen Sie den Gesamtpreis des Produkts</span></span><span>
</span><span><span class="hljs-variable">$total_price</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcmul</span></span><span>(</span><span><span class="hljs-variable">$price</span></span><span>, </span><span><span class="hljs-variable">$quantity</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Gesamtpreis des Produkts:<span class="hljs-subst">$total_price</span></span></span><span>\n";  </span><span><span class="hljs-comment">// Ausgabe:Gesamtpreis des Produkts:999.90</span></span><span>

</span><span><span class="hljs-comment">// Berechnen Sie den Preis nach Rabatt</span></span><span>
</span><span><span class="hljs-variable">$discount</span></span><span> = </span><span><span class="hljs-string">'0.85'</span></span><span>;
</span><span><span class="hljs-variable">$discounted_price</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcmul</span></span><span>(</span><span><span class="hljs-variable">$total_price</span></span><span>, </span><span><span class="hljs-variable">$discount</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Preis nach Rabatt:<span class="hljs-subst">$discounted_price</span></span></span><span>\n";  </span><span><span class="hljs-comment">// Ausgabe:Preis nach Rabatt:849.91</span></span><span>

</span><span><span class="hljs-comment">// Berechnen Sie Steuern und Gebühren</span></span><span>
</span><span><span class="hljs-variable">$tax_rate</span></span><span> = </span><span><span class="hljs-string">'0.1'</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">$discounted_price</span></span><span>, </span><span><span class="hljs-variable">$tax_rate</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Steuern:<span class="hljs-subst">$tax</span></span></span><span>\n";  </span><span><span class="hljs-comment">// Ausgabe:Steuern:84.99</span></span><span>

</span><span><span class="hljs-comment">// Berechnen Sie den endgültigen Preis(Preis nach Rabatt + Steuern)</span></span><span>
</span><span><span class="hljs-variable">$final_price</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bcadd</span></span><span>(</span><span><span class="hljs-variable">$discounted_price</span></span><span>, </span><span><span class="hljs-variable">$tax</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Endpreis:<span class="hljs-subst">$final_price</span></span></span><span>\n";  </span><span><span class="hljs-comment">// Ausgabe:Endpreis:934.90</span></span><span>
</span></span>

5. Verwenden Sie BCMUL () und BCDIV (), um komplexe Finanzberechnungen durchzuführen

Für komplexere Finanzberechnungen wie mehrere Raten, Zinsenberechnungen usw. können Sie auch BCMUL () und BCDIV () kombinieren, um genaue mathematische Modelle zu implementieren. Durch rationale Auswahl der Berechnungsgenauigkeitsparameter ( Skala ) können wir sicherstellen, dass selbst sehr komplexe Berechnungsprozesse die endgültigen Ergebnisse korrekt gehalten werden.

6. Leistungsoptimierung und Vorsichtsmaßnahmen

  • Leistungsüberlegungen : Der BCMATH -Betrieb ist langsamer als der native PHP -Betrieb, da er basierend auf Zeichenfolgen arbeitet. Trotzdem ist das High-Precision-Computing häufig ein Muss in Anwendungsszenarien. In diesen Szenarien lohnt es sich, BCMath zu verwenden.

  • Vermeiden Sie den Genauigkeitsverlust : Stellen Sie bei der Verwendung von BCMath immer sicher, dass die eingehenden Daten in die entsprechende Präzision formatiert wurden. Andernfalls kann das Ergebnis immer noch Genauigkeitsfehler geben.

7. Zusammenfassung

In PHP bietet uns die BCMATH -Erweiterung leistungsstarke Funktionen für hochpräzise Computer, die besonders für die Handhabung von Szenarien wie Finanzen und wissenschaftlichem Computer geeignet sind, die eine hohe Genauigkeit erfordern. Durch BCMUL () und BCDIV () -Funktionen können wir problemlos hochpräzise Multiplikations- und Abteilungsvorgänge implementieren, um die Genauigkeit der Berechnungsergebnisse sicherzustellen. Setzen Sie in der tatsächlichen Entwicklung eine angemessene Genauigkeit und Skalierung gemäß den Anforderungen, um schwimmende Berechnungsfehler zu vermeiden, wodurch zuverlässige Ergebnisse erzielt werden.