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

C++ 如何在C+中写入小数点后的2位数字+;?,c++,c,floating-point,double,C++,C,Floating Point,Double,在C语言中,我们可以这样写 printf("%.2f", number); 如何在C++中实现这一点?< /P> std::cout << "The number is " << number; std::cout您需要使用iomanip工具,例如: #include <iostream> #include <iomanip> int main() { double pi = 3.141592653589; std::cout

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

printf("%.2f", number);
如何在C++中实现这一点?< /P>
std::cout << "The number is " << number;

std::cout您需要使用
iomanip
工具,例如:

#include <iostream>
#include <iomanip>

int main() {
    double pi = 3.141592653589;
    std::cout << std::fixed << std::setprecision(2) << pi << '\n';
    return 0;
}
如果您想定位更改的影响(无论是
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;
}

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

您需要使用
iomanip
功能,例如:

#include <iostream>
#include <iomanip>

int main() {
    double pi = 3.141592653589;
    std::cout << std::fixed << std::setprecision(2) << pi << '\n';
    return 0;
}
如果您想定位更改的影响(无论是
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;
}

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

。应该是重复的…应该是重复的…感谢您的回答有一件事需要注意:
std::setprecision(2)
更改
std::cout
的状态,因此它会影响以后打印的任何浮点值。@Keith,说得好。虽然它可能不一定直接适用于这个问题,但我会提到它并提供一个解决方法。谢谢你的回答有一件事需要注意:
std::setprecision(2)
更改
std::cout
的状态,因此它会影响以后打印的任何浮点值。@Keith,说得好。虽然它可能不一定直接适用于这个问题,但我会提到它并提供一个解决方法。