C + + поток с 3 цифрами после десятичной точки. Как?

Если у меня есть переменная типа float и вы хотите получить результат с 3 цифрами после десятичной точки, используйте iostream в С++. Как я могу это сделать?

Ответ 1

Используйте 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

Ответ 2

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

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

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

Ответ 3

Вы можете получить фиксированное количество дробных цифр (и многое другое), используя заголовок 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