it-swarm-pt.tech

Como saída com 3 dígitos após o ponto decimal com fluxo C ++?

Dada uma variável do tipo float, como produzi-la com 3 dígitos após o ponto decimal, usando iostream em C++?

15
Alex Lapchenko

Use setf e 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;
}

Isso imprime 3.142

22
dasblinkenlight

Este mostra "13.141"

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

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

Você pode obter um número fixo de dígitos fracionários (e muitas outras coisas) usando o cabeçalho iomanip. Por exemplo:

#include <iostream>
#include <iomanip>

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

irá produzir:

3.14

Observe que fixed e setprecision alteram o fluxo permanentemente; portanto, se você deseja localizar os efeitos, pode salvar as informações antecipadamente e restaurá-las depois:

#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;
}

A saída disso é:

3.14159
3.14
3.14
3.14159
7
paxdiablo

Se você deseja imprimir números com precisão de 3 dígitos após o decimal, basta adicionar o seguinte antes de imprimir o número cout << std::setprecision(3) << desired_number. Não se esqueça de adicionar #include <iomanip> no seu código.

2
uneet7