Frage #4

Warum werden meine Zahlen immer abgerundet, und wie kann ich das ändern?

Antwort:

Im Normalfall wird nicht gerundet sondern es werden einfach alle Nachkommastellen abgeschnitten. D.h. bei jeder Konvertierung von einer Gleitkommazahl in eine Ganzzahl werden alle Nachkommastellen abgeschnitten und nur der Wert vor dem Komma der neuen Ganzzahl zugewiesen. Meistens möchte man jedoch kaufmännisch runden, wofür es eine sehr einfache Lösung gibt:

Lösung:

Man muss die Eigenschaft, dass die Nachkommastellen abgeschnitte werden nur geschickt ausnutzen und kann damit dann ganz einfach runden. Der „Trick“ besteht darin, vor dem Runden 0.5 zur Gleitkommazahl dazu addieren und erst dann in eine Ganzzahl zu konvertieren. Dadurch das alles nach dem Komma abgeschnitten wird, bekommt man so den richtig gerundeten ganzzahligen Wert. Wer mir nicht glaubt, dass das funktioniert, der braucht sich nur zwei einfache Beispiel anschauen:

int zahl_1 = 14.49 + 0.5; // -> zahl_1 == 14(.99);
int zahl_2 = 14.50 + 0.5; // -> zahl_1 == 15(.00);

Verbesserungsvorschläge

Hat dir diese Antwort geholfen? Wenn nicht oder wenn du Verbesserungs- bzw. Erweiterungsvorschläge hast, dann schreib das bitte einfach auf die Diskussionsseite.

Zurück zur FAQ-Übersicht