Как вывести с 3 цифрами после десятичной точки с потоком C ++? - PullRequest
13 голосов
/ 19 декабря 2011

Учитывая переменную типа float, как вывести ее с 3 цифрами после десятичной точки, используя iostream в C ++?

Ответы [ 4 ]

19 голосов
/ 19 декабря 2011

Использование setf и 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;
}

Это печатает 3.142

9 голосов
/ 19 декабря 2011

Это показывает "13.141"

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

int main(){
    double f = 13.14159;
    cout << fixed;
    cout << setprecision(3) << f << endl;
    return 0;
}
7 голосов
/ 15 января 2014

Вы можете получить фиксированное количество дробных цифр (и многих других), используя заголовок iomanip.Например:

#include <iostream>
#include <iomanip>

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

выведет:

3.14

Обратите внимание, что и fixed, и setprecision постоянно изменяют поток, поэтому, если вы хотите локализовать эффекты, вы можетепредварительно сохраните информацию и затем восстановите ее:

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

Вывод:

3.14159
3.14
3.14
3.14159
2 голосов
/ 25 сентября 2018

Если вы хотите напечатать числа с точностью до 3 цифр после десятичной запятой, просто добавьте следующую вещь перед печатью числа cout << std::setprecision(3) << desired_number. Не забудьте добавить #include <iomanip> в ваш код.

...