web-dev-qa-db-fra.com

Comment sortir avec 3 chiffres après le point décimal avec le flux C++?

Avec une variable de type float, comment l'afficher avec 3 chiffres après le point décimal, en utilisant iostream en C++?

13
ozeron

Utilisez setf et precision .

#include <iostream>

using namespace std;

int main () {
    double f = 3.14159;
    cout.setf(ios::fixed,ios::floatfield);
    cout.precision(3);
    cout << f << endl;
    return 0;
}

Ceci imprime 3.142

18
dasblinkenlight

Celui-ci montre "13.141"

#include <iostream>
#include <iomanip>
using namespace std;

int main(){
    double f = 13.14159;
    cout << fixed;
    cout << setprecision(3) << f << endl;
    return 0;
}
9
mask8

Vous pouvez obtenir un nombre fixe de chiffres fractionnaires (et beaucoup d'autres choses) en utilisant l'en-tête iomanip. Par exemple:

#include <iostream>
#include <iomanip>

int main() {
    double pi = 3.141592653589;
    std::cout << std::fixed << std::setprecision(2) << pi << '\n';
    return 0;
}

affichera:

3.14

Notez que fixed et setprecision changent le flux de façon permanente. Par conséquent, si vous souhaitez localiser les effets, vous pouvez enregistrer les informations à l'avance et les restaurer ultérieurement:

#include <iostream>
#include <iomanip>

int main() {
    double pi = 3.141592653589;

    std::cout << pi << '\n';

    // Save flags/precision.
    std::ios_base::fmtflags oldflags = std::cout.flags();
    std::streamsize oldprecision = std::cout.precision();

    std::cout << std::fixed << std::setprecision(2) << pi << '\n';
    std::cout << pi << '\n';

    // Restore flags/precision.
    std::cout.flags (oldflags);
    std::cout.precision (oldprecision);

    std::cout << pi << '\n';

    return 0;
}

Le résultat de ceci est:

3.14159
3.14
3.14
3.14159
6
paxdiablo

Si vous souhaitez imprimer des nombres avec une précision de 3 chiffres après le point décimal, ajoutez ce qui suit avant d’imprimer le nombre cout << std::setprecision(3) << desired_number. N'oubliez pas d'ajouter #include <iomanip> dans votre code.

2
swissArmyKnife7