J
Godspeed schrieb:
In der Hilfe steht RoundTo Das geht aber nicht.
"geht aber nicht" ist keine gültige Fehlermeldung oder Beschreibung.
Was dein für dich vielleicht merkwürdiges Verhalten bei der schreibweise angeht, so liegt das daran, wie C die Datentypenkonvertierung durchführt. Wenn du deine Rechnung typenbasiert betrachtest, so sieht die so aus:
float = integer / integer
Das heisst also für dich, der Compiler rechnet erst die beiden Integerzahlen, woraus das Ergebnis - aus sicht des Compilers - ebenfalls wieder ein Integer werden muss. Erst anschliessend konvertiert er den wert nach float. Doch dann sind die nachkommastellen bereits verloren.
Wenn du allerdings
zahl = 28 / 5.0
schreibst, so sieht der Compiler
float = integer / float
Dann konvertiert er den Integer zunächst nach Float und rechnet erst dann. Das Ergebnis wird logischerweise auch ein float und der wird dann float zugewiesen...
eine etwas wirre Erklärung, aber ich hoffe du hast sie verstanden. (btw: im Prinzip hätte es gereicht, wenn du einen der Operanden nach "Float" gecastet hättest (z.B. zahl = 28 / static_cast<float>(5);)
-junix