繁体   English   中英

如何用C++流输出小数点后3位数字?

[英]How to output with 3 digits after the decimal point with C++ stream?

给定一个float类型的变量,如何在C++中使用iostream输出小数点后3位?

使用setfprecision

#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

这个确实显示“13.141”

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

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

您可以使用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

如果要打印小数点后 3 位精度的数字,只需在打印数字cout << std::setprecision(3) << desired_number之前添加以下cout << std::setprecision(3) << desired_number 不要忘记在代码中添加#include <iomanip>

通常,精度是显示的最大位数。 操纵器固定将设置输出流以固定格式显示值。 fixed中精度是小数点后的位数。 setprecision允许设置用于显示浮点值的精度,它需要一个整数参数。

cout << fixed;
cout << setprecision(3) << f << endl;

您可以使用cout.unsetf(ios::fixed)取消固定

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM