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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...