详解C++中fixed、setprecision()用法

目录

引言

fixed

setprecision()

组合使用 fixed 和 setprecision()


引言

fixedsetprecision 是 C++ 中用于控制浮点数输出格式的两个流操纵符,代码开头都需要包含头文件#include <iomanip>。

正常不使用fixedsetprecision的情况:

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

    int main() {
        double largeNum = 123456789.0;
        double smallNum = 0.000123456789;
        double normalNum = 123.456789;

        cout << "Large number:"<< largeNum << endl;
        cout << "Small number:"<< smallNum << endl;
        cout << "Normal number:"<< normalNum << endl;

        return 0;
    }

运行结果:

 如果不使用任何特定的流操纵符来控制输出,C++ 程序中的浮点数输出将遵循默认的规则和行为。如果数值非常大或非常小,以科学计数法输出。保留有效位至多6位(有效位包括小数点前的位数,如用例Normal number)。

fixed

fixed 是一个流操纵符,用于设置输出流的浮点数显示格式。当应用了 fixed 操纵符后,浮点数将始终以固定小数点格式输出,保留小数点后六位(不是六位有效位),而不是科学计数法。这使得输出的数字更易于阅读和理解,尤其是在需要显示具体小数位数的场合。

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


int main() {
    double num1 = 123456789.123;
    double num2 = 123456789.123456;
    double num3 = 123456789.1234567;
    cout << fixed << num1 << endl;//输出为 123456789.123000
    cout << fixed << num2 << endl;//输出为 123456789.123456
    cout << fixed << num3 << endl;//输出为 123456789.123457
    return 0;
}

setprecision()

单独使用setprecision(n) 会设置输出流的精度为 n 位有效数字,这意味着输出的数字将尽可能保留 n 位非零数字,如下:

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    double largeNum = 123456789.0;
    double smallNum = 0.000123456789;
    double normalNum = 123.456789;

    cout << "Precision set to 3: " << setprecision(3) << largeNum << endl;
    cout << "Precision set to 3: " << setprecision(3) << smallNum << endl;
    cout << "Precision set to 3: " << setprecision(3) << normalNum << endl;

    return 0;
}

组合使用 fixed 和 setprecision()

当这两个操纵符一起使用时,可以精确控制浮点数的输出格式。fixed 确保数字以固定小数点格式输出,而 setprecision 指定小数点后的位数(不是有效位位数)。

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    double num = 123456789.123456789;
    cout << fixed << setprecision(2) << num << endl; // 输出为 123456789.12
    return 0;
}

感谢阅读,欢迎大家指正错误。

创作不易,如果我的文章对你有帮助,请点赞收藏关注,您的支持是我前进的最大动力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值