Aktueller Standort: Startseite> Neueste Artikel> Tipps, um Dezimalpunkte in PHP zu vermeiden, um zu vermeiden

Tipps, um Dezimalpunkte in PHP zu vermeiden, um zu vermeiden

gitbox 2025-06-27
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil des Codes hat nichts mit dem Inhalt des Artikels zu tun,Nur als Beispiel</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Willkommen, um diesen Artikel zu lesen!"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

existieren PHP Verwendet in </span><span><span class="hljs-title function_ invoke__">floor</span></span><span>() Tipps zur Funktion, bei der Rundungsfehler in Dezimalpunkten vermieden werden

existieren进行数值计算时,Insbesondere der Rundungsvorgang mit Dezimalpunkten,PHP Integrierte Funktionen </span><span><span class="hljs-title function_ invoke__">round</span></span><span>() Manchmal liegt es an der Genauigkeit der schwimmenden Punktzahlen,Die Ergebnisse sind nicht zufriedenstellend。Zum Beispiel,Wenn Sie preisen müssen、Bei der Verarbeitung von Daten wie Zinssätzen,</span><span><span class="hljs-title function_ invoke__">round</span></span><span>() Es können ungenaue Ergebnisse erzeugt werden,Dies wirkt sich auf die Logik und die endgültige Ausgabe des Programms aus。

</span><span><span class="hljs-comment">## Häufig gestellte Fragen</span></span><span>

PHP Schwimmpunktgenauigkeitsgrenze,Ursache wie </span><span><span class="hljs-number">1.005</span></span><span> Solche Zahlen </span><span><span class="hljs-title function_ invoke__">round</span></span><span>() Bei der Verarbeitung,Erwartet sein </span><span><span class="hljs-number">1.01</span></span><span>,Aber das Ergebnis kann sein </span><span><span class="hljs-number">1.00</span></span><span>。这是因为浮点数existieren计算机内部是以二进制形式存储的,Viele Dezimal -Dezimalzahlen können nicht genau ausgedrückt werden,Fehler verursachen。

```php
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">round</span></span><span>(</span><span><span class="hljs-number">1.005</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe 1</span></span><span>
</span></span>

Verwenden von Floor (), um Rundungsfehler zu vermeiden

Die Floor () -Funktion ist nach unten abgerundet. Obwohl es nicht nach Rundung klingt, können Sie den Effekt des "Aufenthalts an der am nächsten liegenden Untergrenze bleiben", um den Fehler zu vermeiden, der durch die rundlichen Punktzahlen verursacht wird.

Implementierungsmethode

  1. Verstärken Sie die Zahl der entsprechenden Dezimalziffern, wie z. B. zwei Dezimalstellen beibehalten, und vergrößern Sie sie dann das 100 -fache.

  2. Fügen Sie der vergrößerten Zahl einen kleinen Offset -Wert (z. B. 0,00001) hinzu, um schwimmende Punktfehler zu vermeiden.

  3. Verwenden Sie Floor (), um abzurunden;

  4. Zurück zu seiner ursprünglichen Größe.

Beispielcode:

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">floor_round</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$number</span></span></span><span>, </span><span><span class="hljs-variable">$precision</span></span><span> = </span><span><span class="hljs-number">2</span></span><span>) {
    </span><span><span class="hljs-variable">$multiplier</span></span><span> = </span><span><span class="hljs-title function_ invoke__">pow</span></span><span>(</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-variable">$precision</span></span><span>);
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">floor</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span> * </span><span><span class="hljs-variable">$multiplier</span></span><span> + </span><span><span class="hljs-number">0.00001</span></span><span>) / </span><span><span class="hljs-variable">$multiplier</span></span><span>;
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">floor_round</span></span><span>(</span><span><span class="hljs-number">1.005</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe 1.00,Sie können jedoch den Offset -Wert entsprechend Ihren Anforderungen anpassen, um genauere Ergebnisse zu erzielen</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">floor_round</span></span><span>(</span><span><span class="hljs-number">1.2349</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// Ausgabe 1.23</span></span><span>
</span></span>

Notiz

  • Die Größe des Offsetwerts muss entsprechend dem Bereich der tatsächlichen Daten angepasst werden, um unerwartete numerische Abweichungen zu vermeiden.

  • Wenn Sie strenge Rundungseffekte benötigen, wird empfohlen, mathematische Erweiterungen mit mehreren Präzisions wie BCMath oder GMP zu verwenden.

  • Floor () eignet sich hauptsächlich für "Runding Down", was hilfreich ist, um "multiple Runding" oder "mehrere" Szenarien zu vermeiden.

Zusammenfassen

Die Verwendung der Floor () -Funktion in Kombination mit Vergrößerung und winzigen Offset -Werten kann den Fehler, der durch rundende Schwimmpunktzahlen verursacht wird, effektiv vermeiden. Es ist ein praktischer Trick, wenn es um finanzielle oder metrologische Daten geht. Das Verständnis des zugrunde liegenden Mechanismus schwimmender Punktzahlen und rationaler Auswahl von Funktionen und Algorithmen kann Ihr PHP -Programm stabiler und zuverlässiger machen.

 <span><span><span class="hljs-comment">// Das Ende hängt nicht mit dem Inhalt des Artikels zusammen</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Danke fürs Lesen,Verabschiedung!"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>