PHP Berechungsfehler

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Berechungsfehler

    Hi,

    es gibt ein Problem mit einem Script, deren Werte aus der Datenbank ausgelesen werden. Nachdem ich diese Einzelwerte (alles double) in testvariablen eingetragen habe, ist nie der Wert ausgegeben worden ist, der sein müsste, nämlich der Wert 0.

    Wenn ich als Beispiel folgende Werte habe:

    $wert1=67.49;
    $wert2=59.99;
    $wert3=7.50;

    $ausgabe=$wert1-$wert2-$wert3;

    // Ausgabe -7.1054273576E-015
    echo $ausgabe;
    // Ausgabe -0.00
    printf("%01.2f", $ausgabe);

    Ich komme nie auf den Wert 0. Sollte der $wert3 jedoch 7.49 betragen ist die Ausgabe dann wieder 0.01.

    Liegt das Problem an PHP selber, V5.1.1, oder eher am Prozessor?

    Danke für jede Hilfe bezüglich dieses Problems.

  • #2
    Das hängt damit zusammen dass Zahlen intern in Bit Form gespeichert werden. Gewisse Zahlen lassen sich aber nicht mit einer endlichen Menge Stellen in Bit-Form darstellen. Also kannst du runden oder dir mal http://de.php.net/manual/de/book.bc.php anschauen
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Double kennt PHP nicht
      und Float ist immer ungenau, siehe language.types.float.

      Kommentar


      • #4
        PHP-Code:
        $wert1=67.49;
        $wert2=59.99;
        $wert3=7.50;

        echo 
        bcsub(bcsub($wert1,$wert2),$wert3); 
        Ausgabe: -0
        Wir werden alle sterben

        Kommentar


        • #5
          Hat alles super geklappt. Danke für die Tips.

          Kommentar

          Lädt...
          X