tomycat - Fr 27.11.15 21:09
Titel: Addieren macht Müll...
hallo,
hab was ganz komisches, Ergebnis ist -2,384186E-07
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| string xy= ""; string[] words; float umsatz_x = 0; foreach (var item in work_l.SelectedItems) { xy = item.ToString(); words = xy.Split(' '); umsatz_x = umsatz_x + float.Parse(words[4]); textBox7.Text = umsatz_x.ToString(); } |
Im Prinzip habe ich flogende Zahlen, die ich aus einer Tabelle auslese:
3,57
3,57
0
-10,71
3,57
Das Ergebnis sollte 0 sein, ist es aber nicht.
Die Schleife läuft 5 mal durch. Wenn ich die Pos 1,2,3,4 nehme gehts, sowie 2,3,4,5 das geht auch. Das Ergebnis ist -3,57
word[4] kann ich mir mit der Messagebox anzeigen lassen, die Zahlen werden richtig angezeigt.
Moderiert von
Th69: Code- durch C#-Tags ersetzt
Ralf Jansen - Fr 27.11.15 21:50
Fließkommazahlen sind unscharf/ungenau wenn man rein dezimal ~denkt~. Was in Dezimal sehr kurz darstellbar ist wird im Binärsystem eventuell sehr lang und kann mit begrenzter Bitzahl nicht genau dargestellt werden. Das gilt umgekehrt natürlich auch. Ließ dir mal den Wiki Artikel zu
Fließkommazahlen [
https://de.wikipedia.org/wiki/Gleitkommazahl] durch. Insbesondere den Teil 'Einschränkungen und deren mathematische Grundlagen'. Wenn du im Dezimalsystem genau rechnen willst und weder riesige noch ganz kleine Zahlen verwendest nimm Decimal.