Warum double ohne Nachkommastellen?
-
Hallo Zusammen,
erstmal Entschuldigung falls die Frage doof ist, ich bin noch absoluter Anfänger.
Ich habe ein Code geschrieben, welcher das Volumen eines Zylinders mittels Unterprogramm bestimmen soll.
Das Problem hierbei ist nur, dass ich obwohl ich überall double verwendet habe, mein Ergebnis als 12.00000 ausgegeben wird statt 12.560000 - also kommen die Nachkommastellen irgendwo abhanden. Ich bin leider wirklich überfragt woran das liegen könnte. Hier mal der Code:#include <stdio.h> #include <stdlib.h> int Oberflaeche (double r, double h); int main(){ double r1, h1, r2, h2, o1, o2; printf("r1 = "); scanf("%lf", &r1); printf("h1 = "); scanf("%lf", &h1); //printf("r2 = "); scanf("%lf", &r2); //printf("h2 = "); scanf("%lf", &h2); printf("r1 = %lf, h1 = %lf\n", r1, h1); //printf("r2 = %lf, h2 = %lf\n", r2, h2); o1 = Oberflaeche (r1, h1); //o2 = Oberflaeche (r2, h2); printf("%lf", o1); } int Oberflaeche (double r, double h){ double O; double pi = 3.14; O = (2 * pi * r * (r+h)); return O; }
Wenn ich jetzt für r1 und h1 jeweils 1 eingebe, kommt leider nicht 12.56 raus sondern nur 12.00
-
Was hast du denn als Rückgabetyp der Funktion
Oberflaeche
angegeben?
-
@ShrimpMan Welche Warnungen gibt denn der Compiler aus?
-
@DirkB sagte in Warum double ohne Nachkommastellen?:
@ShrimpMan Welche Warnungen gibt denn der Compiler aus?
Ich bin zwar nicht ShrimpMan, aber die relevante Warnung kommt nur, wenn man mit
-Weverything
(oder explizit mit-Wfloat-conversion
) kompiliert (zumindest bei clang & gcc;-Wall -Wextra
, was ich z.B. standardmäßig benutze, reicht nicht). MSVC gibt die relevante Warnung mit/W2
aus.
-
@DirkB mein compiler gibt garkeine warnungen aus
-
@Th69 stimmt, da habe ich int angegeben. Das war der Fehler, jetzt funktioniert es. Vielen Dank für die Hilfe!
-
@ShrimpMan sagte in Warum double ohne Nachkommastellen?:
mein compiler gibt garkeine warnungen aus
Welchen Compiler nutzt du? Hast du Warnungen aktiviert?
-
@ShrimpMan Was willst du denn nun berechnen?
Volumen oder Oberfläche. Und woher kommt die Formel für O?
-
@DirkB Ja Oberfläche, die Formel ist aus dem Internet. Habe mich vertippt oben.