Mein Builder rundet nicht richtig



  • Moin
    Hab ein kleines Problem mit meinem Builder6 Prof. Bei der Rechnung float Zahl = 28 / 5 kommt 5 raus, wenn ich nun /5.0 schreibe sehe ich zumindestens 5.6. Wie kann ich nun richtig Runden(möchte gern das er 6 anzeigt und nicht 5)? In der Hilfe steht RoundTo Das geht aber nicht.
    Gibt es da einen anderen Befehl oder muss ich mir erst ne funktion schreiben?

    Gruss Alex



  • Addiere deinem Ergebnis doch einfach 0,5 dazu.. dann kann er hintendran abschneiden was er will. 🙂



  • hmm das ist ja einfach 😃
    Ich glaube nächtelang durchprogramieren verursacht Brainbugs
    Danke



  • 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


Anmelden zum Antworten