如何用c++流输出小数点后的3位数字

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

本文关键字:3位 数字 小数点 输出 何用 c++      更新时间:2023-10-16

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

使用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.142"

#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之前添加以下内容。不要忘记在代码中添加#include <iomanip>

一般来说,精度是显示的最大位数。操纵符fixed将设置输出流,以fixed格式显示值。在固定中,精度是小数点后的位数。setprecision允许设置用于显示浮点值的精度,它接受整型参数。

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

您可以使用cout.unsetf(ios::fixed)

来取消fixed