[PHP] große Zahlen, Exponentenschreibweise

tedlemegba

abgemeldet
20 April 2006
2.729
175
Ahoi zusammen!

Ich experimentierte soeben in PHP mit sehr großen Zahlen. Wenn ich mir die ausgeben lasse kommt teilweise sowas wie 3.62833538759E+227 dabei raus. Wie genaus ist die Zahl denn gespeichert? Ich hoffe mal, dass nur die Ausgabe "ungenau" ist. Wie sieht's denn also mit dieser quasi 228-stelligen Zahl aus. Wenn ich diese Zahl habe und eine andere, deren Differenz 1 beträgt. Kann ich damit noch rechnen? Oder werden die Stellen alle geschluckt und der Wert der Variable wird nicht so genau gespeichert?! Eigentlich könnte man es PHP ja nicht übel nehmen. :ugly: Interessiert mich nur mal.

Danke. :D

Edit: also ggf. auf

VIII. Mathematische Funktionen mit beliebiger Genauigkeit
Einführung


Für beliebig genaue mathematische Operationen bietet PHP den Binary Calculator, der Zahlen von beliebiger Länge und Genauigkeit, die als String vorliegen, unterstützt.

ausweichen bei sowas? :D
 
Zuletzt bearbeitet:
Ich zitiere von https://de2.php.net/manual/de/language.types.float.php:
Die Größe einer Fließkomma-Zahl ist plattformabhängig, dennoch stellt ein Maximum von ~1.8e308 mit einer Genauigkeit von 14 Nachkomma-Stellen einen üblichen Wert dar (das entspricht 64-Bit im IEEE-Format).

Fließkomma Präzision
Es ist ziemlich normal, dass einfache Dezimalzahlen wie 0.1 oder 0.7 nicht in ihre internen binären Entsprechungen konvertiert werden können, ohne einen kleinen Teil ihrer Genauigkeit zu verlieren. Das kann zu verwirrenden Ergebnissen führen. So wird floor((0.1 + 0.7) * 10) normalerweise 7 statt des erwarteten Wertes 8 zurück geben (als Ergebnis der internen Entsprechung von 7.9999999999...).
Das gründet sich auf die Tatsache, dass es unmöglich ist, manche Dezimal-Zahlen durch eine endliche Anzahl an Nachkomma-Stellen darzustellen. Dem Wert 1/3 entspricht z.B. der interne Wert von 0.3333333. . ..
Deshalb sollten Sie nie den Ergebnissen von Fließkomma-Operationen bis auf die letzte Nachkomma-Stelle trauen und nie solche auf Gleichheit prüfen. Benötigen Sie wirklich eine größere Genauigkeit, sollten sie die mathematischen Funktionen beliebiger Genauigkeit oder die Gmp Funktionen benutzen.
 
Hm.. dabei geht's aber hauptsächlich um Nachkommastellen. Im Prinzip hab' ich nur Integer-Werte (aber keine Ahnung ob die noch als solche gelten). Mir geht's also wenn, dann um die Stellen vor dem Komma. Aber danke dir. :mrgreen: Da es eh "nur" um Größenvergleich von sehr großen (aber auch sehr nah bei einander liegenden) Zahlen geht eventuell doch Stelle für Stelle vergleichen mit Abbruchbedingung.

Edit: ich glaube ich komme mit ~1.8e308 nicht sehr weit. :D :ugly: Na ja alles nur sehr experimentell.