2016-08-11 2 views
0

Kann php mit extrem kleinen Zahlen umgehen, ohne sie zu runden? Zum Beispiel, wenn Sie exp(-99) + 1/2 berechnen, berechnen Sie dies als 0.5. Dies ist problematisch, wenn ich später das gegebene Ergebnis multiplizieren möchte, anstatt einer extrem kleinen Zahl, es gibt nur die Hälfte der Zahl.Verhindern, dass php kleine Zahlen abrundet

echo exp(-99) + 1/2 // Outputs 0.5 
+1

Php ‚doesn t echo "1/2". Zeigen Sie echten Code und Ausgabe (a [mcve]), die das Problem hervorhebt. –

+0

@ JonathonReinhart in meinem PHP-Echo gibt '0.5' zurück. @Joshhh lesen über Float-Nummern - sie haben so etwas wie ** PRECISION **. Lesen Sie darüber. Und denken Sie daran - Float-Nummer ist nur in Ihrem Kopf. 0,5 $ sind es 50 Cent. Vielleicht solltest du deine Idee ändern? – ventaquil

Antwort

0

Sie sind außerhalb des Bereichs, der von Gleitkommazahlen unterstützt wird.

Auf meiner Plattform (PHP Schwimmer sind 64-Bit) echo exp(-99); kehrt currectly 1.0112214926104E-43

Das ist, weil der exponentielle Teil enought breit ist e^-99

darzustellen Aber wie ich hinzufügen ... echo exp(-99)+0.5; ich 0.5

Das Ergebnis, das Sie erwarten, wäre etwas mit mehr als 50 Dezimalziffern.

Doppelschwimmer haben keine so große Mantisse (normalerweise liegt die Grenze bei 18-20 Dezimalstellen).

Um Ihre Frage zu beantworten, wenn Sie wirklich so Mathe (Griff extrem kleine Zahlen ohne sie Rundung) tun müssen, um Sie PHP beliebiger Genauigkeit mathematische Erweiterung verwenden:

http://php.net/manual/en/book.bc.php

Verwandte Themen