Fahrenheit in Celsius umwandeln
-
Hallo liebe Gemeinde.
Ich wollte gerade eben ein Programm schreiben, das mir Grad Fahrenheit in Grad Celsius umwandelt.
Dazu folgender Programmcode:
#include <iostream> using namespace std; //Fahrenheit in Celsius umwandeln int main() { cout << "Fahrenheit in Celsius umwandeln!" << endl; cout << endl; cout << " 5 " << endl; cout << "C = - (F-32) " << endl; cout << " 9 " << endl; cout << endl; cout << "Wieviel Fahrenheit hat es gerade?" << endl; float Fahrenheit; cin >> Fahrenheit; cout << "Wieviel Grad ist das?" << endl; float Celsius = ((Fahrenheit-32)*(5/9)); cout << "In Grad Celsius umgerechnet ist das: " << Celsius << " Grad!" << endl; return 0; }
Das komische ist, dass immer 0 rauskommt, wenn ich es debugge.
Es liegt wohl an der Zeile
float Celsius = ((Fahrenheit-32)*(5/9));
Weil wenn ich die 5/9tel weg lasse, dann wird von einer über die Tastatur eingelesenen Zahl 32 abgezogen.
Hättet ihr vielleicht einen Tipp??
Vielen Dank im Voraus.
Gruß
Max
-
5/9 ist eine Ganzzahldivision, d.h. der Rest wird abgeschnitten. Also ist 5/9 == 0. Du willst eine Fließkommadivision. Dafür muss mindestens ein Operand eine Fließkommazahl sein.
-
Ich dachte, dass beim Modulo-Operator (%) der Rest abgeschnitten wird??
-
silent_max schrieb:
Ich dachte, dass beim Modulo-Operator (%) der Rest abgeschnitten wird??
Nein, der gibt dir den Rest!
-
Der Modulo-Operator nimmt nur den Rest.
-
5/9 wird als int gewertet und ist daher gecasted 0. pack einfach n float vor die 5 oder schreib 5.0f
-
Lass die Klammer um 5/9 weg:
((Fahrenheit-32)*5/9);
Da Fahrenheit ein float ist, wird (Fahrenheit-32) als float gerechnet.
Dann wird auch (....)*5 als float gerechnet und demnach dann auch .../9 .
Punkt vor Strich und von links nach rechts.Wenn du sicher gehen willst, dass du Fließkommazahlen bekommst, setze einfach einen . dahinter. Es reicht bei einer Zahl.
((Fahrenheit-32)*(5./9))