Heim  >  Artikel  >  Backend-Entwicklung  >  Lösungen für ungenaue Gleitkommaoperationen unter PHP

Lösungen für ungenaue Gleitkommaoperationen unter PHP

墨辰丷
墨辰丷Original
2018-05-31 10:07:301616Durchsuche

Dieser Artikel stellt hauptsächlich die Lösung für die ungenaue Gleitkommaoperation unter PHP vor. Ich hoffe, dass er für alle hilfreich ist.

Machen Sie kürzlich eines? Das Problem der Addition und Subtraktion besteht darin, dass Gleitkommaoperationen ungenau sind. Es scheint wahr zu sein, dass interpretierte Sprachen Probleme mit Gleitkommaoperationen haben.

Schauen Sie sich zunächst einen Teil des Codes an:

<?php
$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);

Der gedruckte Wert ist tatsächlich boolean false

Warum ist das so? Das PHP-Handbuch enthält die folgende Warnmeldung für Gleitkommazahlen:

Warnung

Gleitkommagenauigkeit

Anscheinend können einfache Dezimalbrüche wie 0,1 oder 0,7 nicht in das interne Binärformat umgewandelt werden, ohne ein wenig an Präzision zu verlieren. Dies kann zu verwirrenden Ergebnissen führen: Beispielsweise gibt floor((0.1+0.7)*10) normalerweise 7 statt der erwarteten 8 zurück, da die interne Darstellung des Ergebnisses etwa 7.9999999999... ist.

Dies hängt damit zusammen, dass es unmöglich ist, bestimmte Dezimalbrüche mit einer endlichen Anzahl von Ziffern genau auszudrücken. Beispielsweise wird 1/3 in Dezimalzahl zu 0,3333333.

Vertrauen Sie also niemals darauf, dass das Ergebnis einer Gleitkommazahl bis zur letzten Ziffer genau ist, und vergleichen Sie niemals zwei Gleitkommazahlen, um festzustellen, ob sie gleich sind. Wenn Sie wirklich eine höhere Präzision benötigen, sollten Sie mathematische Funktionen mit beliebiger Präzision oder GMP-Funktionen verwenden.

Dann sollten wir die obige Berechnung als

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Lernen aller hilfreich sein wird.


Verwandte Empfehlungen:

PHP implementiert die Formatierungsfunktion für SQL-Anweisungen

phpMethode zur Implementierung monomorpher Entwurfsmuster

Methode des TP5-Request-Anforderungsobjekts in PHP

Das obige ist der detaillierte Inhalt vonLösungen für ungenaue Gleitkommaoperationen unter PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn