Heim php教程 php手册 Lösungen für ungenaue Gleitkommaberechnungen, Vergleiche und Rundungen in PHP_php-Grundlagen

Lösungen für ungenaue Gleitkommaberechnungen, Vergleiche und Rundungen in PHP_php-Grundlagen

May 16, 2016 am 09:00 AM
取整 浮点数

Vergleich der Ergebnisse der Gleitkommaberechnung
Ein Beispiel für eine Gleitkommaberechnung ist wie folgt:

Code kopieren Der Code lautet wie folgt:

$a = 0,2+0,7;
$b = 0,9;
var_dump($a == $b);

Das gedruckte Ergebnis ist: bool(false). Mit anderen Worten, das Berechnungsergebnis von 0,2 + 0,7 entspricht hier nicht 0,9, was offensichtlich unserem gesunden Menschenverstand widerspricht.

Zu diesem Problem heißt es im offiziellen PHP-Handbuch einmal: Anscheinend kann ein einfacher Dezimalbruch wie 0,2 nicht in ein internes Binärformat konvertiert werden, ohne ein wenig an Präzision zu verlieren. Dies hat damit zu tun, dass es unmöglich ist, bestimmte Dezimalbrüche exakt mit einer endlichen Anzahl von Stellen auszudrücken. Beispielsweise wird 1/3 in Dezimalzahl zu 0,3333333….

Wir drucken die oben genannten Variablen im Format mit doppelter Genauigkeit aus:

Code kopieren Der Code lautet wie folgt:

$a = 0,2+0,7;
$b = 0,9;
printf("%0.20f", $a);
echo '
';
printf("%0.20f", $b);

Die Ausgabeergebnisse lauten wie folgt:

Code kopieren Der Code lautet wie folgt:

0,89999999999999991118
0,90000000000000002220

Da es sich um Gleitkommadaten handelt, ist hier offensichtlich ein Teil ihrer Genauigkeit verloren gegangen und sie können nicht vollständig genau sein. Vertrauen Sie also niemals darauf, dass das Ergebnis einer Gleitkommazahl bis zur letzten Ziffer genau ist, und vergleichen Sie niemals zwei Gleitkommazahlen auf Gleichheit. Es ist zu beachten, dass dies kein Problem mit PHP ist, sondern ein Problem mit der computerinternen Verarbeitung von Gleitkommazahlen! Das gleiche Problem tritt in Sprachen wie C und JAVA auf.

Um also zwei Gleitkommazahlen zu vergleichen, müssen wir sie vor dem Vergleich innerhalb des Genauigkeitsbereichs kontrollieren, den wir benötigen. Verwenden Sie daher die Funktion bcadd(), um die Gleitkommazahlen zu addieren und die Genauigkeit (in eine Zeichenfolge) umzuwandeln:

Code kopieren Der Code lautet wie folgt:

var_dump(bcadd(0.2,0.7,1) == 0.9); // Ausgabe: bool(true)

Rundung von Gleitkommazahlen

Im Artikel „PHP-Rundungsfunktionen Decke und Boden“ gibt es ein Beispiel:

Code kopieren Der Code lautet wie folgt:

echo ceil(2.1/0.7); // Ausgabe: 4
?>

Nach der obigen Diskussion über die Berechnung von Gleitkommazahlen wissen wir, dass dies an den ungenauen Ergebnissen der Berechnung von Gleitkommazahlen liegt:

Code kopieren Der Code lautet wie folgt:

printf("%0.20f", (2.1/0.7)); // Ausgabe: 3.0000000000000044409
?>

Nach der obigen Diskussion zur Berechnung von Gleitkommazahlen wissen wir, dass dies durch das ungenaue Ergebnis der Berechnung von Gleitkommazahlen verursacht wird, sodass wir die Funktion „round()“ verwenden können, um damit umzugehen:

Code kopieren Der Code lautet wie folgt:

echo ceil( rund((2.1/0.7),1) );
?>

Obwohl die Funktion „round()“ entsprechend der angegebenen Genauigkeit rundet, hat die Beibehaltung einer Dezimalstelle keinen Einfluss auf unser Rundungsergebnis.

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So konvertieren Sie einen String in PHP in eine Dezimalzahl So konvertieren Sie einen String in PHP in eine Dezimalzahl Mar 22, 2023 pm 03:22 PM

PHP ist eine leistungsstarke Programmiersprache, die in der Welt der Webentwicklung weit verbreitet ist. Eine der sehr häufigen Situationen ist die Notwendigkeit, eine Zeichenfolge in eine Dezimalzahl umzuwandeln. Dies ist bei der Datenverarbeitung sehr nützlich. In diesem Artikel erklären wir, wie man in PHP einen String in einen Dezimalwert umwandelt.

PHP-Rundungsmethode für Gleitkommazahlen PHP-Rundungsmethode für Gleitkommazahlen Mar 21, 2024 am 09:21 AM

In diesem Artikel wird die Rundungsmethode für PHP-Gleitkommazahlen ausführlich erläutert. Der Herausgeber hält sie für sehr praktisch, daher hoffe ich, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können. PHP-Gleitkomma-Rundung – Übersicht Gleitkommazahlen werden in Computern als Dezimalpunkt gefolgt von einem Exponenten dargestellt, sie werden jedoch oft in Näherungen mit einer begrenzten Anzahl von Ziffern gespeichert. Wenn Sie eine Gleitkommazahl auf eine bestimmte Genauigkeit runden müssen, gibt es mehrere Möglichkeiten, dies zu tun. Methode 1. Funktion „round()“ Die Funktion „round()“ rundet eine Gleitkommazahl auf die nächste Ganzzahl. Es akzeptiert Gleitkommazahlen und optionale Präzisionsparameter. Zum Beispiel: $num=1.55;echoround($num);//Ausgabe: 2echoround($num,1)

So dividieren und runden Sie in PHP So dividieren und runden Sie in PHP Mar 21, 2023 pm 02:52 PM

Mit der Entwicklung der Computerprogrammierung können wir auf Szenarien stoßen, in denen wir in unserer täglichen Programmierarbeit Divisionsoperationen und Rundungen durchführen müssen. Bei der PHP-Programmierung können wir verschiedene Methoden nutzen, um diesen Zweck zu erreichen.

Konvertieren Sie eine Gleitkommazahl mit der Funktion strconv.FormatFloat in einen String Konvertieren Sie eine Gleitkommazahl mit der Funktion strconv.FormatFloat in einen String Jul 25, 2023 am 11:45 AM

Verwenden Sie die Funktion strconv.FormatFloat, um Gleitkommazahlen in Zeichenfolgen umzuwandeln. In der Go-Sprache müssen wir häufig Gleitkommazahlen für Ausgabe- oder Speicherzwecke in Zeichenfolgentypen konvertieren. Das strconv-Paket wird in der Go-Sprache bereitgestellt und die darin enthaltene FormatFloat-Funktion kann Gleitkommazahlen in String-Typen konvertieren. Die FormatFloat-Funktion benötigt drei Parameter: f stellt die zu konvertierende Gleitkommazahl dar, fmt stellt das Format dar und prec stellt die Anzahl der beizubehaltenden Dezimalstellen dar. Darunter der f-Parameter

Ursachen und Vermeidungsstrategien von PHP-Gleitkomma-Berechnungsfehlern Ursachen und Vermeidungsstrategien von PHP-Gleitkomma-Berechnungsfehlern Feb 27, 2024 pm 06:33 PM

Als beliebte serverseitige Skriptsprache treten bei PHP häufig Probleme mit Präzisionsverlusten oder Berechnungsfehlern bei der Durchführung von Gleitkommaberechnungen auf. Diese Probleme können die Genauigkeit und Stabilität des Programms beeinträchtigen. In diesem Artikel werden die Ursachen von PHP-Gleitkommaberechnungsfehlern untersucht, einige Vermeidungsstrategien vorgeschlagen und spezifische Codebeispiele als Referenz angegeben. 1. Gründe für PHP-Gleitkommaberechnungsfehler In Computern werden Gleitkommazahlen in binärer Form dargestellt, und Binärzahlen können nicht alle Dezimalzahlen genau darstellen, was zur Ungenauigkeit von Gleitkommazahlen führt.

Eine ausführliche Erklärung von PHP BCMath: Das Potenzial von Zahlenoperationen freisetzen Eine ausführliche Erklärung von PHP BCMath: Das Potenzial von Zahlenoperationen freisetzen Feb 23, 2024 am 09:10 AM

:1. Einführung in BCMath BCMath ist eine in PHP integrierte Erweiterungsbibliothek, die speziell für die Verarbeitung großer Ganzzahl- und Gleitkommazahlenoperationen verwendet wird. Es bietet eine Fülle von Funktionen zur Durchführung verschiedener mathematischer Operationen wie Addition, Subtraktion, Multiplikation, Division, Quadrat und Quadratwurzel und unterstützt die digitale Darstellung in mehreren Basen. 2. Vorteile von BCMath Im Vergleich zu den von PHP nativ bereitgestellten arithmetischen Operatoren und Funktionen bietet BCMath vor allem die folgenden Vorteile: Höhere Präzision: Die Operationsergebnisse von BCMath können signifikantere Ziffern behalten, was besonders für Berechnungen mit großen Zahlen nützlich ist. Größerer Bereich: BCMath kann größere Zahlen als die nativen Datentypen von PHP verarbeiten und vermeidet so Überlauf- oder Präzisionsprobleme. Umfangreichere Funktionen: BCMath bietet

So konvertieren Sie einen String in PHP in einen Float So konvertieren Sie einen String in PHP in einen Float Mar 27, 2024 pm 12:48 PM

Das Konvertieren einer Zeichenfolge in eine Gleitkommazahl ist eine häufige Operation in PHP und kann über integrierte Methoden durchgeführt werden. Stellen Sie zunächst sicher, dass die Zeichenfolge in einem zulässigen Gleitkommaformat vorliegt, bevor sie erfolgreich in eine Gleitkommazahl konvertiert werden kann. Im Folgenden wird detailliert beschrieben, wie eine Zeichenfolge in PHP in eine Gleitkommazahl konvertiert wird, und es werden spezifische Codebeispiele bereitgestellt. 1. (Float-)Cast verwenden In PHP ist die Verwendung von Cast der einfachste Weg, einen String in eine Gleitkommazahl umzuwandeln. Die Möglichkeit, die Konvertierung zu erzwingen, besteht darin, (float) vor der Zeichenfolge hinzuzufügen, und PHP konvertiert sie automatisch

So runden Sie eine Gleitkommazahl mithilfe der Math.Truncate-Funktion in C# ab So runden Sie eine Gleitkommazahl mithilfe der Math.Truncate-Funktion in C# ab Nov 18, 2023 pm 02:02 PM

Für die Verwendung der Math.Truncate-Funktion in C# zum Abrunden von Gleitkommazahlen sind bestimmte Codebeispiele erforderlich. Bei der C#-Programmierung treten häufig Situationen auf, in denen Gleitkommazahlen abgerundet werden müssen. Unter diesen ist das Abrunden eine gängige Operation und kann mit der Math.Truncate-Funktion in C# implementiert werden. In diesem Artikel wird die Verwendung der Math.Truncate-Funktion ausführlich vorgestellt und spezifische Codebeispiele bereitgestellt. Die Math.Truncate-Funktion ist eine mathematische Funktion in C#, die zum Konvertieren einer Gleitkommazahl verwendet wird

See all articles