Beträge abziehen

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

  • Beträge abziehen

    Hallo liebe Community,

    ich bin dabei, ein Rechnungssystem zu schreiben, habe jedoch Schwierigkeiten mit der Verarbeitung von Beträgen. Mein Problem besteht darin, dass wenn ich von einer Summe eine oder mehrere Summen abziehe, dass der Restbetrag nicht null ist ($value == 0), obwohl er null sein müsste.

    Wie kann ich diesem Problem auf die Schliche kommen beziehungsweise direkt lösen?

    Viele Grüße
    Someday

  • #2
    Zeig mal Code.

    Kommentar


    • #3
      Da es sich um Rechnungswesen handelt dürfte es sich wohl um das übliche Gleitkommapräzisionsproblem handeln. Man sollte niemals eine Gleitkommazahl mit einem Integer Vergleichen, schon gar nicht mit 0.
      Warum?

      Nehmen wir mal dieses Beispiel:

      PHP-Code:
      $var 0.1;
      $var += 0.7;
      $var -= 0.8
      Nach dem menschnlichen Rechenverständnis wäre in $var jetzt eine runde Null ohne wenn und aber. Aber schauen wir uns das ganze mal durch den Computer berechnet an:

      PHP-Code:
      var_dump($var); // float(-1.11022302463E-16)
      var_dump($var == 0); // bool(false) 
      var_dump((int)$var == 0); // bool(true) 
      Man sieht also, dass Gleitkommawerte verglichen mit ganzen Zahlen in der Regel Unsinn ergibt (nach der menschlichen Mathematik) und zwingend ein Typecast erforderlich ist, um einen solchen Vergleich zu machen.
      Aber auch hier ist Vorsicht geboten.

      PHP-Code:
      $var = (int) ( (0.1+0.7) * 10 ); 
      ergibt zum Beispiel nicht 8, sondern 7, genauer gesagt 7,999999999 und dann wird abgerundet.
      Mehr dazu gibts im PHP Handbuch unter Floating point precision

      Kommentar

      Lädt...
      X