Keine Kommaausgabe bei floatberechnung



  • Hi, ich verstehe nicht ganz, weshalb bei den Floatberechnungen keine Kommazahlen ausgegeben werden..

    Wenn man bei der letzten Aufgabe + statt * macht wird ein Komma angezeigt..

    #include <iostream>
    
    using namespace std;
    
    template <typename T>
    T Test (T bullshit, T bullshit2)
    {
    	T ergebnis;
    	ergebnis = bullshit*bullshit2;
    	return ergebnis;
    };
    template <typename T, typename R>
    T Test2 (T bla1, R bla2)
    {
    	T TErgebnis;
    	R RErgebnis;
    
    	TErgebnis = bla1*bla2;
    
    	return TErgebnis;
    };	
    
    int main () {
    
    	int zahl = 99;
    	int zahl2 = 200;
    	int realergebnis;
    	float fzahl = 391.39;
    	float fzahl2 = 493.23;
    	float frealergebnis;
    	float bullshit;
    	float testtest;
    
    Test (zahl, zahl2);
    realergebnis = Test (zahl, zahl2);	
    cout << realergebnis;
    
    cout << endl << endl;
    
    Test (fzahl, fzahl2);
    frealergebnis = Test (fzahl, fzahl2);
    cout << frealergebnis;
    
    cout << endl << endl;
    
    Test2 (zahl, fzahl2);
    bullshit = Test2 (zahl, fzahl2);
    cout << bullshit;
    
    cout << endl << endl;
    testtest = fzahl * fzahl2;
    cout << testtest;
    }
    

  • Mod

    Die Zahlen sind schlicht länger als die Standardanzeigegenauigkeit der ostreams. Das hat auch einen Grund, nämlich dass float ohnehin nur ungefähr 7 Dezimalstellen genau ist, die Nachkommastellen hier also ohnehin mit Vorsicht zu genießen wären.



  • Hi,

    ich glaub standardmäßig werden bei Fließkommazahlen immer nur 6 Stellen angezeigt. Und da vor dem Komma bereits 6 Stellen sind, werden eben keine Nachkommastellen angezeigt. Versuch mal

    cout << fixed << setprecision( 10 ) << testtest;
    

    Bitte das nächste mal richtig einrücken. Außerdem nur das Posten was wichtig ist. Wenn es nur um die letze Ausgabe geht, interessieren mich die 10 Zeilen drüber nicht... kostet alles Zeit.



  • Der compiler sagt setprecision wurde nicht deklariert. Ansonsten kommt man da wohl mit prtinf weiter oder?



  • kamelkacke schrieb:

    Ansonsten kommt man da wohl mit prtinf weiter oder?

    mir printf kommst du bestimmt nicht weiter, sondern du bewegst dich zurück (zeitlich gesehen).

    Ansonsten:

    1. google "setprecision"
    2. erster Link "setprecision - C++ Reference"
    3. benötigten Header <iomapin> raussuchen
    4. kompilieren


  • Allrighty danke an alle!



  • daddy_felix schrieb:

    1. benötigten Header <iomapin> raussuchen

    -> <iomanip>


Anmelden zum Antworten