[C++]cout输出精度控制

本文介绍了如何使用C++中的cout来精确控制浮点数的输出精度,并提供了完整的代码示例。通过使用<iomanip>头文件中的setprecision函数配合fixed,可以轻松设置输出的小数点后位数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

printf 的 %lf 只有在g++4.8及以上才支持,这里记录一下通过cout控制输出精度的方式:

头文件:<iomanip>

方法:setprecision(i),i为总的显示位数,如需控制精度,则在之前加上fixed,此时i表示小数点后位数。

题目来自:http://poj.org/problem?id=1862

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <iomanip>
using namespace std;
double record[105];
bool cmp(const double a, const double b) {
    return a > b;
}
int main() {
    int n;
    while (cin >> n) {
        for (int i = 0; i < n; i++) {
            cin >> record[i];
        }
        sort(record, record+n, cmp);
        for (int i = 0; i < n-1; i++) {
            record[i+1] = 2*sqrt(record[i]*record[i+1]);
        }
        cout << fixed << setprecision(3) << record[n-1] << endl;
    }
}


### C++ 中 `cout` 控制浮点数输出精度方法 在 C++ 中,可以使用多种方式来控制通过 `cout` 输出的浮点数值的小数位数。以下是几种常见的方式: #### 使用 `setprecision` 为了设置输出流中显示的有效数字数量,可以通过引入 `<iomanip>` 库并调用 `setprecision()` 函数实现这一点。 ```cpp #include <iostream> #include <iomanip> // 导入 iomanip 头文件以便使用 setprecision() int main() { double value = 12.3456789; std::cout << "Default precision: " << value << '\n'; std::cout << "Precision of 8 digits: "; std::cout << std::setprecision(8) << value << '\n'; // 设置有效数字为8位[^1] return 0; } ``` #### 结合 `fixed` 或者 `scientific` 当希望固定小数点后的位数而不是总的显著位数时,可以在应用 `setprecision()` 前先设定模式为 `fixed` 或者 `scientific`。这会影响后续所有的浮点数打印直到再次改变该属性为止。 ```cpp #include <iostream> #include <iomanip> int main(){ double x = 123.0; std::cout << "Without fixed modifier:\t" << x << "\n"; // 默认行为类似于 %g,在必要情况下会省略不必要的零[^2] std::cout << "With fixed modifier:\t"; std::cout << std::fixed << x << "\n"; // 类似于 printf 的%f, 总是展示固定的十进制地方 } ``` #### 利用 C++20 新特性——`std::format` 对于采用 C++20 及以上标准编译器的情况,还可以利用新加入的标准库函数 `std::format` 来更简洁地完成同样的任务,并支持动态调整小数位数。 ```cpp #include <iostream> #include <format> // 需要在C++20及以上版本才能正常使用此头文件 int main(){ float a = 123.456789F; int b = 4; std::cout << "Formatted output with static decimal places: " << std::format("{:.2f}", a) << "\n"; // 固定两位小数[^3] std::cout << "Dynamic number of decimals based on variable 'b': " << std::format("{:.{}f}", a, b); // 动态决定小数位数 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值