Fließkommazahlen



  • hey leute ich muss ein programm machen das zwei zahlen dividiert und anschließend das Ergebniss ausgiebt.
    ich würde gerne fließkommazahlen dividieren und das ergebniss soll auch vom typ float sein.
    Z.B:
    225/13,5=16,66666666667
    ich habe es versucht mit float und double aber es geht nicht.
    wenn ich die erste dezimalzahl eingegeben habe, bekomme ich andere zahlen ausgegeben.
    Ich bitte Euch um Hilfe
    Danke im Voraus!


  • Mod

    Zeig Code.

    edit: Und wenn du schon dabei bist: "Funktioniert nicht" ist keine hilfreiche Fehlerbeschreibung.



  • Wilde Vermutung: Versuch mal, die Zahlen mit Dezimalpunkt statt Dezimalkomma einzugeben, wie es in Amerika üblich ist.

    Für lokal übliche Eingabe musst du mit der Locale rumfummeln. Das sieht dann beispielsweise so aus:

    #include <iostream>
    #include <locale>
    
    int main() {
      std::locale loc("de_DE"); // Unter Windows möglicherweise "de-DE"
      double d;
    
      std::cin.imbue(loc);
      std::cin >> d;
    
      std::cout << d << std::endl;
    }
    


  • hier ist der code:

    #include <iostream>
    #include <conio.h>
    using namespace std;

    void main()
    {

    float U,R,I;

    cout<<"Programm zur Berechnung des Widerstandes!";
    cout<<endl<<"----------------------------------------------";
    cout<<endl;
    cout<<"Geben Sie den Wert für den Strom in [A] an: ";
    cin>>I;
    cout<<endl<<"Geben Sie den Wert für die Spannung in [V] an: ";
    cin>> U;

    R = U / I;

    cout<<"Der elektrische Widerstand hat "<<float (R)<<" Ohm";
    getch();
    return ;
    }



  • Du musst z.B. 2.2 oder 9.04726 eingeben. Siehe seldons Beitrag. Für Komma statt Punkt, siehe auch seinen Beitrag.

    Ich hab deinen Code mal angepasst:

    #include <iostream> 
    #include <conio.h>
    #include <locale>
    using namespace std; 
    
    int main()  // Rückgabetyp von main ist int!
    { 
    	float U,R,I; 
    
    	locale loc("german");  // bei Visual Studio "german"
    	cin.imbue(loc);
    
    	cout<<"Programm zur Berechnung des Widerstandes!"; 
    	cout<<endl<<"----------------------------------------------"; 
    	cout<<endl; 
    	cout<<"Geben Sie den Wert für den Strom in [A] an: "; 
    	cin>>I; 
    	cout<<endl<<"Geben Sie den Wert für die Spannung in [V] an: "; 
    	cin>> U; 
    
    	R = U / I; 
    
    	cout<<"Der elektrische Widerstand hat "<< R <<" Ohm"; // kein Casten nötig, R ist bereits float
    	getch(); 
    	return 0;
    }
    


  • danke für die schnelle antwort, aber ich habe in der schule nur mit float und double gearbeitet und wenn ich was neues ins programm einbaue ist das dann merkwürdig
    gibt es aber eine möglichkeit nur mit flaot, double etc. zu arbeiten?



  • claudium schrieb:

    danke für die schnelle antwort, aber ich habe in der schule nur mit float und double gearbeitet und wenn ich was neues ins programm einbaue ist das dann merkwürdig
    gibt es aber eine möglichkeit nur mit flaot, double etc. zu arbeiten?

    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!
    PUNKT STATT KOMMA !!!


Anmelden zum Antworten