Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Also, noch ein Problem. Ich führe mit ein paar Zahlen Rechenoperationen durch. Das Ergebnis ist so groß das es mir als 1.8494380618592E+020 ausgegeben wird. Wie kann ich das so ausgeben das ich keine Potenz darin habe? Kann ruhig ein String sein - also ich muss damit nicht weiter rechnen können.

Bine

Geschrieben

Probiers es mal mit number_format zum formatieren der Zahl

number_format(zahl, 0, ",",".")

Leider hab ich noch nicht ausprobiert, wie sich printf bei so grossen zahlen verhalten.

Geschrieben

Dabei bekomme ich leider nicht die Zahl raus die ich haben will. Mir geht es darum das er Zahlen ab einer bestimmten Größe als Potenz ausgibt (also mit dem E dazwischen) - und das will ich vermeiden. Ich will kein Komma durch irgendwas ersetzen.

Bine

Geschrieben

Hast du printf schon versucht ?

printf("%30.2f", $zahl);

30 Stellen vor bzw. nach dem Komma sollten eigentlich ausreichen, es sei denn du rechnest gegen unendlich... :D Dann nimm lieber ein paar mehr :rolleyes:

MfG

Geschrieben

Also hier nochmal eine Verdeutlichung:

$zahl=123451234512345123451234512345;

normale Ausgabe:

echo $zahl;

1.2345123451235E+29

echo number_format($zahl, 0, "","");

123451234512345121227855101952

echo sprintf("%30.0f", $zahl);

123451234512345120000000000000

Woher die Ungenauigkeit:

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.

Geschrieben

Könnte das vielleicht auch noch andere Gründe haben ? PHP-Version, CPU oder ähnliches ?


$zahl=123451234512345123451234512345;
echo $zahl."<br><br>";
echo number_format($zahl, 0, "","")."<br><br>";
echo sprintf("%30.0f", $zahl)."<br><br>";
[/PHP]

gibt bei mir

1.2345123451235E+029

123451234512345120000000000000

123451234512345170000000000000

aus.

:confused:

MfG

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...