You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中setprecision未按预期工作及编译错误求助

问题解决:setprecision使用的两个错误修复

1. 编译错误:setPrecision未定义

你写的setPrecision是拼写错误,C++标准库中的正确函数名是小写p的setprecision,属于<iomanip>头文件,把setPrecision(1)改成setprecision(1)就能解决这个编译错误。

2. 输出结果不符合预期(10而非10.5)

你的avg函数返回类型是int,就算计算(8+13)/2.0得到的是10.5,但赋值给int x时会自动截断小数部分,变成10,返回给主函数的也是整数类型,后续的setprecision(1)对整数无效。

修复方案:把avg函数的返回类型和变量类型改成double,保留小数部分:

修正后的完整代码

#include <iostream>
#include <iomanip>

using namespace std;

double avg(int a, int b)
{
    double x = (a + b) / 2.0;
    return x;
}

int main()
{
    cout << fixed << setprecision(1) << avg(8, 13) << endl;
    return 0;
}

或者更简洁的写法(省略中间变量):

double avg(int a, int b)
{
    return (a + b) / 2.0;
}

运行修正后的代码就能输出预期的10.5。

内容的提问来源于stack exchange,提问作者Jeremy P Kral

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:30:54