Ausgabe der korrekten Anzahl von Dezimalstellen mit cout

Lesezeit: 3 Minuten

Ausgabe der korrekten Anzahl von Dezimalstellen mit cout
Thameera

Ich habe eine Liste von float Werte und ich möchte sie mit drucken cout mit 2 Nachkommastellen.

Zum Beispiel:

10.900  should be printed as 10.90
1.000 should be printed as 1.00
122.345 should be printed as 122.34

Wie kann ich das machen?

( setprecision scheint dabei nicht zu helfen.)

1647094207 170 Ausgabe der korrekten Anzahl von Dezimalstellen mit cout
Beduine

Mit <iomanip>können Sie verwenden std::fixed und std::setprecision

Hier ist ein Beispiel

#include <iostream>
#include <iomanip>

int main()
{
    double d = 122.345;

    std::cout << std::fixed;
    std::cout << std::setprecision(2);
    std::cout << d;
}

Und Sie erhalten eine Ausgabe

122.34

  • Warum verwenden Sie “std:fixed” im Programm?

    – Vilas Joshi

    5. Juni 2018 um 16:59 Uhr

  • Dafür kann ein sinnvoller Header definiert werden: #define FIXED_FLOAT(x) std::fixed <<std::setprecision(2)<<(x) was die Verwendung vereinfacht zu: cout<<FIXED_FLOAT(d)

    – Udayraj Deshmukh

    25. August 2018 um 2:03 Uhr

  • @VilasJoshi, setprecision setzt die Anzahl der Ziffern nach dem Dezimaltrennzeichen, wenn es 5 Ziffern gibt und wir setprecision(2) verwenden, erhalten wir 2 Ziffern, aber wenn es 0 Ziffern gibt, werden keine angezeigt, mit fixed fixieren wir, dass viele Ziffern vorhanden sind angezeigt werden, sodass 5 als 5,00 Nr. 5 dargestellt wird

    – Vaibnak

    18. Oktober 2018 um 13:33 Uhr

  • @vaibnak Das ist bis zum Falschen irreführend. setprecision setzt “die Anzahl der Stellen”, die je nach Zustand das std::fixed Sätze ist entweder “signifikante Stellen”, “Nachkommastellen” oder “Nachkommastellen”. hexadezimal Ort”

    – Caleth

    6. April 2021 um 16:00 Uhr

  • Danke für den Hinweis, Caleth. Beachten Sie für andere Leute, dass “n-Stelle nach dem Dezimalkomma” tatsächlich setprecision in fixed verwendet

    – RexYuan

    7. April 2021 um 18:17 Uhr

Sie waren fast am Ziel, müssen auch std::fixed verwenden, siehe http://www.cplusplus.com/reference/iostream/manipulators/fixed/

#include <iostream>
#include <iomanip>

int main(int argc, char** argv)
{
    float testme[] = { 0.12345, 1.2345, 12.345, 123.45, 1234.5, 12345 };

    std::cout << std::setprecision(2) << std::fixed;

    for(int i = 0; i < 6; ++i)
    {
        std::cout << testme[i] << std::endl;
    }

    return 0;
}

Ausgänge:

0.12
1.23
12.35
123.45
1234.50
12345.00

setprecision(n) gilt für die ganze Zahl, nicht für den Bruchteil. Sie müssen das Festkommaformat verwenden, damit es auf den Bruchteil angewendet wird: setiosflags(ios::fixed)

Vereinfachen Sie die akzeptierte Antwort

Vereinfachtes Beispiel:

#include <iostream>
#include <iomanip>

int main()
{
    double d = 122.345;
    std::cout << std::fixed << std::setprecision(2) << d;
}

Und Sie erhalten eine Ausgabe

122.34

Referenz:

1647094208 539 Ausgabe der korrekten Anzahl von Dezimalstellen mit cout
saurav52

#include<stdio.h>
int main()

{

 double d=15.6464545347;

printf("%0.2lf",d);

}

Ausgabe der korrekten Anzahl von Dezimalstellen mit cout
Hargun Singh

Ich hatte dieses ähnliche Problem bei einem Programmierwettbewerb und so habe ich es gehandhabt. Festlegen einer Genauigkeit von 2 für alle Double-Werte

Fügen Sie zuerst den Header hinzu, um setprecision zu verwenden

#include <iomanip>

Fügen Sie dann den folgenden Code in unserer main

  double answer=5.9999;
  double answer2=5.0000;
  cout<<setprecision(2)<<fixed;
  cout <<answer << endl;
  cout <<answer2 << endl;

Ausgabe:

5.99
5.00

Sie müssen Fixed zum Schreiben von 5,00 verwenden, deshalb wird Ihre Ausgabe nicht für 5,00 ausgegeben.

Ein kurzer Referenzvideolink, den ich hinzufüge, ist hilfreich

Sie müssen den ‘Float-Modus’ auf Fixed setzen.

float num = 15.839;

// this will output 15.84
std::cout << std::fixed << "num = " << std::setprecision(2) << num << std::endl;

993860cookie-checkAusgabe der korrekten Anzahl von Dezimalstellen mit cout

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy