PHP Berechungsfehler

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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)

    Comment


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

      Comment


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

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

        Comment


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

          Comment

          Working...
          X