heuols: MYSQL Rechnung: 1.5 + 2 = 3.4999999 ?!

Hallo alle zusammen,
ich speicher in einer Datenbank Werte varchar Format also als String.
Nun möchte ich in einer While Schleife die Werte addieren. Option eins mit SUM(beträge) oder eben durch die while schleife. Jeddoch rechner immer falsch!
Hier ein Beispiel:

1
-1
0.5
3
-1.5
-1
-0.5
= 0.049999999999997 EUR

Wie kann dieser Fehler zustande kommen? und was kann ich dagegen tun?

  1. Hallo alle zusammen,
    ich speicher in einer Datenbank Werte varchar Format also als String.
    Nun möchte ich in einer While Schleife die Werte addieren. Option eins »»mit SUM(beträge) oder eben durch die while schleife. Jeddoch rechner immer

    Was genau war  nochmal gleich der Grund, warum du Fließkommazahlen und Integer als VARCHAR speichert wolltest?

    1. Hallo alle zusammen,
      ich speicher in einer Datenbank Werte varchar Format also als String.
      Nun möchte ich in einer While Schleife die Werte addieren. Option eins »»mit SUM(beträge) oder eben durch die while schleife. Jeddoch rechner immer

      Was genau war  nochmal gleich der Grund, warum du Fließkommazahlen und Integer als VARCHAR speichert wolltest?

      Der Grund war wohl meine masslose Dumheit, ich entschuldige mich niederträchtig und voller Abscheu vor mir selbst, für diese unangemessen dämliche Frage. Doch zu meiner Verteidigung möchte ich aufführen, dass Heute der Tag der dummen Fragen ist

      http://www.facebook.com/event.php?eid=162495490504963

      Aus diesem Grund erhebe ich mich nun und stehe stolz zu meiner Dumheit. Für alle Anderen sei angeführt, dass man Kommabeträge in die Datenbank nieee als VARCAR schreiben sollte. Da ist es besser auf DECIMAL auszuweichen.

      1. Was genau war  nochmal gleich der Grund, warum du Fließkommazahlen und Integer als VARCHAR speichert wolltest?

        Der Grund war wohl meine masslose Dumheit, ich entschuldige mich niederträchtig und voller Abscheu vor mir selbst, für diese unangemessen dämliche Frage. Doch zu meiner Verteidigung möchte ich aufführen, dass Heute der Tag der dummen Fragen ist

        http://www.facebook.com/event.php?eid=162495490504963

        Aus diesem Grund erhebe ich mich nun und stehe stolz zu meiner Dumheit. Für alle Anderen sei angeführt, dass man Kommabeträge in die Datenbank nieee als VARCAR schreiben sollte. Da ist es besser auf DECIMAL auszuweichen.

        Aha, gut, ja, verstehe. Es heisst übrigens Dummheit. Mit zwei "m".

        1. Das war eine Anspielung auf Dum, wenn Du das nicht verstehst solltest Du vielleicht mal darüber nachdenken Bücher zu lesen.

      2. Hi!

        Für alle Anderen sei angeführt, dass man Kommabeträge in die Datenbank nieee als VARCAR schreiben sollte. Da ist es besser auf DECIMAL auszuweichen.

        DECIMAL ist für genaue Rechnungen notwendig, bei der es keine fließkommazahlenbedinge Rundungen geben darf, wie beispielsweise bei Geldbeträgen. Ansonsten kann man auch FLOAT nehmen, das lässt sich aufgrund der einem Rechner angepassten Speicherung schneller berechnen. (Wobei das bei den heutigen Geschwindigkeiten wohl nur bei sehr großen Datenmengen relevant sein wird.) FLOAT sollte aber dieselben Symptome aufzeigen wie in VARCHAR abgelegte Zahlen, weil der VARCHAR-Wert zum Berechnen auch nur in einen FLOAT konvertiert wird, wenn er ein Dezimalzeichen enthält.

        Lo!

      3. PFUI,

        besudel bitte nicht dieses Forum, welches auf hochwertigem Niveau ist, mit einem Link zu dieser primitiven "gib mir all deine Daten damit wir noch reicher werden und auf MTV damit prahlen können, während du mit einem Arbeitslosengeld abgespeist wirst." - Seite

        vielen Danke

        Gruß
        antiprimitiver
        T-Rex

        1. Om nah hoo pez nyeetz, T-Rex!

          besudel bitte nicht dieses Forum, welches auf hochwertigem Niveau ist, mit einem Link zu dieser primitiven "gib mir all deine Daten damit wir noch reicher werden und auf MTV damit prahlen können, während du mit einem Arbeitslosengeld abgespeist wirst." - Seite

          url != link

          Matthias

          --
          1/z ist kein Blatt Papier.

      4. Hi,

        Doch zu meiner Verteidigung möchte ich aufführen, dass Heute der Tag der dummen Fragen ist

        heute ist Tag des Kaffees, Du Teebeutelversteher!

        Cheatah ;-)

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. @@heuols:

    nuqneH

    Wie kann dieser Fehler zustande kommen?

    Das frag ich mich auch immer, wie dieser Fehler zustande kommt, dass manche den Hinweis „Lies unsere FAQ, dort sind häufig gestellte Fragen direkt beantwortet“ auf der Startseite des Forums übersehen.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)