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
相关产品推荐
相关产品推荐

