Autor Beitrag
Poal
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 16.07.12 13:07 
Hi Leute,

ich versuche mal wieder eine Kleinigkeit und bin leider wieder auf ein mir sehr komisches Problem gestoßen. Ich poste mal sinngemäß mein Problem.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
 decimal umwandl1 = 17;
               
 decimal umwandl2 = 489;
              
 decimal ergeb3 = ((umwandl1 / umwandl2)*100);
             
 string ergeb2 = Convert.ToString(String.Format("{0:f2} %", ergeb3));
 //MessageBox.Show(ergeb2); //(String.Format("{0:f2} %", ergeb2)

 dataGridView2.Rows[0].Cells[7].Value = ergeb2;


Hier soll eine Prozentzahl heraus kommen, was auch passiert. Jedoch kommt in der MessageBox das korrekte Ergebnis und in dem DataGridView das falsche heraus....

Seh ich den Wald vor lauter Bäumen nicht oder hab ich einen gravierenden Fehler gemacht?

Würde mich sehr über Vorschläge freuen :-)

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Zuletzt bearbeitet von Poal am Mo 16.07.12 16:00, insgesamt 1-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 16.07.12 14:36 
Zitat:
Seh ich den Wald vor lauter Bäumen nicht oder hab ich einen gravierenden Fehler gemacht?


Direkt Gridzellen zu manipulieren ist sicherlich ein Fehler. Das mag funktionieren ist aber aufgrund des manuellen Aufwands die richtige Zelle zu treffen fehleranfällig.
Deutlich lesbarer und einfacher zu beherrschen sind Listen von Klassen die man einfach ans Grid bindet. Wahrscheinlich fällt dir, wenn du es dahingehend änderst, auch auf das du einfach nur in die falsche Zelle geschaut oder geschrieben hast.

Edit. Ein wenig mehr Geduld wäre mir sympathisch. Auf allen Kanälen nach gerade einer Stunde zu pushen nervt. Danke.
Poal Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 16.07.12 14:43 
Ok, das mit dem Pushen war mir nicht all zu bewusst und Geduld werde ich nun auch über mich ergehen lassen :-) Hab aber die Richtige Zelle Ausgewählt, da ja das falsche Ergebnis dort angezeigt wird. Das Richtige Ergebnis erhalte ich nur, wenn ich es mir in der Messagebox anzeigen lasse.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 16.07.12 15:30 
Zitat:
Hab aber die Richtige Zelle Ausgewählt, da ja das falsche Ergebnis dort angezeigt wird


Klar! Du siehst das falsche drum muss es die richtige Zelle sein. ;) Die Definition von richtiger Zelle trifft dann vermutlich auf alle Zellen zu.

Wir schauen dir gerade nicht über dich Schulter. Du musst also schon deutlicher werden damit man dir folgen kann. Fangen wir mal bei einer simplen Fragestellung an. Was stand vorher in der Zelle, was hätte nach der Zuweisung drin stehen sollen, was steht statt dessen nach der Zuweisung drin. Vielleicht lässt sich daraus dein Problem ableiten.
Poal Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 16.07.12 15:49 
Ok, hört sich gut an :-)

also ich habe in einer Zelle die Zahl: 17 und in der andere die Zahl: 489. Nun möchte 17/489 teilen und erhalte in Prozent normalerweise das Ergebnis: 3,48 %.
Ich erhalte jedoch wenn ich dieses Ergebnis zurück in eine freie andere Zelle schreiben will 2,79 heraus...

Zahl 1 | Zahl 2 | Ergebnis
17 489 2,79 %

Messagebox.Show(liefert aber 3,48 %) <-- was ja richtig ist

In der Messagebox erhalte ich das richtige Ergebnis und wenn ich die Variable in das Datagridview übergeben will das Falsche.

Ich lese also Zahl 1 und Zwei als string aus und Converte es zu double. Dann Teile ich Zahl1 durch Zahl2 und erhalte in der Messagebox das richtige Ergebnis.

Wenn ich selber double werte mit 17 und 489 festlege ohne sie aus dem Datagridview aus zu lesen, erhalte ich beim übergeben in die Ergebnis Zelle auch das richtige Ergebnis.

Somit denke ich fast das sich irgendwo ein kleiner konvertierungsfehler eingeschlichen hat.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 16.07.12 15:51 
Bitte ändere noch den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
3.4 Frage formulieren - Der richtige Titel:
Formuliere den Betreff deiner Themen so, dass der Leser (und damit möglicherweise dein Helfer) anhand des Titels bereits weiß, worum es in diesem Topic geht. Titel wie z.B. "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" machen nicht neugierig auf mehr, ehrlich. Auch "HILFEEEE!!!!" hat sich bisher nicht bewährt. Wenn du ein Topic eröffnest ist es höchstwahrscheinlich, dass du Hilfe brauchst.
Einfach unten in deinem ersten Beitrag auf user defined image klicken und den Titel ändern. Danke dir!

Viele Grüße,
Sebastian

_________________
>λ=
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 16.07.12 16:05 
Das sollte leicht in deinem Code von dir zu finden sein. Du ließt ja scheinbar selbst die Zellen, aus schreibst sie in Variablen, berechnest den Prozentsatz und weißt sie wieder einer Gridzelle zu. Also einfach mal ein Breakpoint vor den Code setzen, durchsteppen, und schauen ob in den beteiligten Variablen auch das drin steht das du erwartest.
Poal Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 16.07.12 16:13 
So, Problem gelöst und so wie ich es dachte hab ich wirklich den Wald vor lauter bäumen nicht gesehen :-)

Da ich die Zellen mit einer For schleife ausgelesen habe hab ich vergessen, die Variable i die als zähler dient auch vorerst nicht als Schleife durchlaufen zu lassen und somit das letzte Ergebnis meiner Tabelle in der Ersten Zelle anzeigen lassen :-)