Ergebnisse einer Rechnung sind falsch...warum???
-
Hallo zusammen,
ich muss noch einen Thread eröffnen...da ich gerade an der einfachsten Rechnung verzweifel. Ich habe eine Funktion, die zwar ein bisschen größer ist, doch möchte ich diese einfach in einem StringGrid darstellen. SO hab ich das angestelt:for(int r=1;r<20;r++) { float Vrotat; Vrotat=(282.995435*(r/6)) / pow(1+2*(pow(r/6,10)),0.15); Form1->StringGrid1->Cells[0][r]=r; Form1->StringGrid1->Cells[1][r]=Vrotat; }
Leider kommen da total falsche Zahlen heraus....kann mir jemand sagen, warum? Ich hab Vrotat auch schon als array gehabt, doch daran liegt es nicht.
vielen Dank
lg, freakC++
-
r/6**.0**
-
hey,
danke, so funktionierts ja wirklich. Kann mir jetzt noch jemand sagen, warum man 6.0 schreiben muss?Vielen Dank
lg, freakC++
-
Hallo
6 wird als int interpretiert, 6.0 als float/double.
Der Unterschied wird dann wichtig wenn die Umwandlung impliziet erfolgt.
Bei r/6 wird ein int durch 6 geteilt, das Ergebnis ist wieder ein int. Die möglichen Nachkommastellen werden abgeschnitten bevor es für die nächste Rechnung in ein float umgewandelt wird.
Mit i/6.0 wird der Kompiler gezwungen bereits die Division als float durchzuführen, und die Nachkommastellen mitzunehmen.bis bald
akari
-
r ist ein int und eine Zahl wie 6 (ohne Nachkommastellen) wird vom Kompiler ebenfalls als int interpretiert.
Das Ergebnis einer Division von zwei int-Zahlen ist auch wieder int.
[edit]Zu spät und weniger ausführlich.[edit]
-
achso, wieder was gelernt!
Vielen Dank
lg, freakC++