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))
    

Anmelden zum Antworten