如何在C ++中写小数点后的2位数?

时间:2014-01-15 02:55:12

标签: c++ c floating-point double

在C语言中我们可以这样写;

printf("%.2f", number);

我怎样才能在C ++中做到这一点?

std::cout << "The number is " << number;

1 个答案:

答案 0 :(得分:5)

您需要使用iomanip内容,例如:

#include <iostream>
#include <iomanip>

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

输出:

3.14

如果要本地化更改的效果(fixedsetprecision永久更改流),您可以事先保存标记和精度并在之后恢复它们:

#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

显示以前的行为正在恢复。