nur 2 nachkommastellen?



  • HALLO AN ALLE.

    ich habe ein double array, dass ich in einer externen datei abspeichern möchte. mich interessieren allerdings nicht alle nachkommastellen der double zahl, sondern nur die ersten 2 oder 3, ansonsten wird meine datei halt zu unübersichtlich.

    mit welchen befehl kann man denn die restlichen stellen einfach abschneiden?

    NEU:
    okay. hab das problem schon selber gelöst. ich multipliziere die zahl einfach mit 100 oder 1000, gebe sie an eine integer zahl, und dividiere diese dann wieder mit 100 bzw. 1000, abgespeichert in einer double zahl. somit bin ich alle restlichen stellen losgeworden.



  • Hallo

    besser als das Rumgerechne ist es wenn du einfach bei dem Speichern in die Datei das gewünshcte Format der Flats angebst. Je nach deiner Art des Speichers gibt es dafür unterschiedliche Methoden, bei ofstream z.B. precision.

    bis bald
    akari



  • wie bereits gesagt lässt sich das problem auch eleganter lösen. 🙂 Das folgende Beispiel gibt das Ergebnis der Division 10/3 auf der Standardausgabe aus. Durch verwendung des Manipulators ios_base::fixed wird das "Festkomma-Format" verwendet. Das Flag lässt sich mit der Fkt setf setzen. Mit dem Befehl setprecisions wird die Anzahl der Nachkommastellen übergeben.

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
      double i=double(10)/3; // 3 Periode 3
    
      cout << i << endl;
    
      /**
       * Ergebnis der Division der oberen Rechenoperation (10/3) mit einer
       * festen Anzahl an Nachkommastellen ausgeben. Im folgenden wird die
       * Verwendung von 2 Stellen nach dem Komma mit setprecision(2)
       * festgelegt
       **/
    
      cout.setf(ios_base::fixed);
      cout << setprecision(2) << i << endl;
    }
    


  • lucky_tux schrieb:

    wie bereits gesagt lässt sich das problem auch eleganter lösen. 🙂 Das folgende Beispiel gibt das Ergebnis der Division 10/3 auf der Standardausgabe aus. Durch verwendung des Manipulators ios_base::fixed wird das "Festkomma-Format" verwendet. Das Flag lässt sich mit der Fkt setf setzen. Mit dem Befehl setprecisions wird die Anzahl der Nachkommastellen übergeben.

    Das Flag kannst du auch direkt per Manipulator setzen:

    cout<<fixed<<setprecision(2)<<i;
    

    und umgekehrt könntest du die Präzision auch per Methode setzen:

    cout.setf(ios::fixed,ios::floatfield);
    cout.precision(2);
    cout<<i;
    


  • das ist mir bewusst! 🙂

    ich habe nur ein wenig zwischen den Flags (wie ios_base::fixed) - diese können auch als Manipulatoren verwendet werden - und den Manipulatoren wie setprecision differenziert 😉


Anmelden zum Antworten