6.29+6.99 = 13.280000000000001

LeJonas

Semiprofi
Thread Starter
Mitglied seit
04.01.2012
Beiträge
1.565
:eek:

Dabei ein wenig mit Javascript herum zu spielen, stieß ich soeben auf....naja n' Bug? :hmm:

Beim Rechnen von 6.29+6.99 erhalte ich in Chrome und auch in Firefox das Ergebnis 13.280000000000001...?!
Das selbe bei den folgenden Rechnungen:
Code:
1.29+0.99 = 2.2800000000000002
7.29+7.99 = 15.280000000000001
Rundungsfehler? Was gibt es hier bitte zu runden?

Hat jemand eine logische Erklärung parat?
Dem wäre ich sehr dankbar.


LeJonas :coffee:
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Das ist normal, da es sich um Fließkommazahlen handelt. Im binären gibt es keine Kommazahlen, deshalb wird hier ein möglichst naher Wert genommen, der binär darstellbar ist.

Gleitkommazahl
 
Es gibt zB 1,28 und 1,31 bzw 7,30 und 7,34 als möglich FP-Zahlen.

Rechnet man jetzt 1,29+7,31, dann kommt als Ergebnis 8,58 und eben nicht 8,6.
Das ist jetzt sehr extrem dargestellt.

Das ist also kein Rundungsfehler, sondern quasi ein Auflösungproblem. Um das zu rechnen, nimmt der Rechner zahlen, die dem eigentlichen Wert am nächsten sind.
Daher muß man, wenn er solchen Zahlen ausgibt, immer auf die Ausgangslage runden. (sprich also 2 Stellen bei dir)
 
thx

Jo ich nehme die Werte jetzt einfach mal 100, rechne dann zusammen und wieder /100... ist wohl für mich erstmal die effektivste respektive einfachste Lösung.


:wink:
 
geiler Threadtitel :d
 
geiler Threadtitel :d

In der Tat :d Aber jeder, der schonmal mit solchen Rundungsfehlern zu tun hatte, weiß worum es geht.

@LeJonas: Handelt es sich bei den Zahlen um Preise? Währungen werden normalerweise nicht als Brüche (6,29€) sondern als Ganzzahlen (629 Cent) gerechnet. Dadurch verhindert man solche Rundungsfehler und muss nur für die Ausgabe des Ergebnisses das Komma um zwei Stellen verschieben.
 
Oder einfach mit Currency-Datentypen arbeiten. In einigen Sprachen gibt es das, um genau diesem Problem aus dem Wege zu gehen.
 
Nennt sich übrigens oft "decimal", falls noch mal jemand diese Probleme hat... Alles, das auch nur irgendwie mit der Repräsentation von Geld zu tun hat, sollte NIE NIE NIE NIE NIEMALS NICHT mit Floats auch nur in Berührung kommen!
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh