Ein Dezimalergebnis erhalten
Wenn du ein Dezimalergebnis willst, muss mindestens eine der beiden Zahlen eine Dezimalzahl sein:
printf("%f\n", 7 / 2.0);
printf("%.1f\n", 7.0 / 2);Das gibt Folgendes aus:
3.500000
3.5Das Ergebnis ist ein double, du gibst es also mit %f oder %.1f aus. Mit %d wäre es ein Kompilierfehler, wie du weißt.
Ein typischer Fehler ist die Annahme, es genüge, das Ergebnis in einem double zu speichern:
double haelfte = 7 / 2;
printf("%f\n", haelfte);Das gibt Folgendes aus:
3.000000C berechnet zuerst 7 / 2. Beide Zahlen sind ganz, also ist das Ergebnis 3, und erst dann wird diese 3 in haelfte gespeichert. Der Typ der Variablen links von = ändert nichts daran, wie die rechte Seite berechnet wird.
Dasselbe passiert mit Variablen. Ein Spieler hat in 4 Spielen 17 Punkte erzielt. Wie hoch ist der Durchschnitt?
int punkte = 17;
int spiele = 4;
double durchschnitt = punkte / spiele;
printf("Durchschnitt: %.2f\n", durchschnitt);Das gibt Folgendes aus:
Durchschnitt: 4.00Das ist falsch: Die richtige Antwort ist 4,25. Du kannst an eine Variable kein .0 anhängen, aber du kannst ihren Wert in einen double umwandeln. Schreibe dazu den Typ in Klammern davor:
int punkte = 17;
int spiele = 4;
double durchschnitt = (double)punkte / spiele;
printf("Durchschnitt: %.2f\n", durchschnitt);Das gibt Folgendes aus:
Durchschnitt: 4.25(double)punkte nimmt den Wert von punkte als Dezimalzahl, 17.0. Und eine Dezimalzahl geteilt durch eine ganze Zahl ergibt ein Dezimalergebnis. Die Variable punkte selbst bleibt ein int. Eine solche Umwandlung heißt Cast (Typumwandlung).
Achte darauf, wo du ihn hinsetzt. (double)(punkte / spiele) hilft nicht: Die Klammern lassen C zuerst teilen, und nur das Ergebnis, 4, wird in 4.0 umgewandelt.
So schreibst du es:
Anweisungen
- 1
Die Freunde teilen die Pizzarechnung von 50 € gleichmäßig auf. Führe das Programm aus: Es gibt
12.00aus, es fehlen also 2 € von der Rechnung. Korrigiere die Berechnung vonpro_personmit(double), damit das ProgrammJeder zahlt: 12.50 €ausgibt. - 2
Die Pizzen waren in 18 Stücke geschnitten. Gib in der nächsten Zeile aus, was ein Stück kostet. Schreibe diesmal die 18 direkt als Dezimalzahl in die Rechnung,
18.0:Ein Stück: 2.78 €