Autor Beitrag
tomycat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 265
Erhaltene Danke: 1



BeitragVerfasst: Fr 27.11.15 21:09 
hallo,
hab was ganz komisches, Ergebnis ist -2,384186E-07

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
string xy= "";
string[] words;
float umsatz_x = 0;
            
// Idee 2
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 user profile iconTh69: Code- durch C#-Tags ersetzt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 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.

Für diesen Beitrag haben gedankt: tomycat
tomycat Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 265
Erhaltene Danke: 1



BeitragVerfasst: Sa 28.11.15 12:59 
mega THX,
meine Lösung:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
string xy= "";
            string[] words;
            float umsatz_x = 0;
            float joker = 0;
            
            // Idee 2
            foreach (var item in work_l.SelectedItems)
            {

             
                xy = item.ToString();
                words = xy.Split(' ');            
                joker = float.Parse(words[4]) *100;


                //  umsatz_x = umsatz_x + float.Parse(words[4]);     
                umsatz_x = umsatz_x + joker;
                

            }
            textBox7.Text = (umsatz_x /100).ToString();


Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt