如何在C++中输出8.00而非8?setprecision报错问题求助
问题:C++输出保留两位小数失败且
setprecision报错 我写了一段C++运算代码,想把运算结果以
8.00这样的格式输出,但现在结果总是显示成8。尝试用setprecision()的时候,一直报错说setprecision不是std的成员。代码如下:
#include <iostream> using namespace std; int main (void){ float int1,int2,int3; char op; cout << "Enter operation: "; cin >> op; cout << "Enter number 1: "; cin >> int1; cout << "Enter number 2: "; cin >> int2; cout << "Enter number 3: "; cin >> int3; cout << "Answer: " << std::setprecision(2); switch (op) { case '+': cout << int1 + int2 + int3; break; case '-': cout << int1 - int2 - int3; break; case '*': cout << int1 * int2 * int3; break; case '/': cout << int1 / int2 / int3; break; default: cout << "what you inputted is not an operation..."; break; } return 0; }
解决步骤
- 添加
<iomanip>头文件setprecision属于格式控制工具,定义在<iomanip>头文件中,你的代码没包含这个头文件,导致编译器无法识别std::setprecision。直接在顶部添加:
#include <iomanip>
- 配合
fixed实现固定小数位
仅使用setprecision(2)只会保留两位有效数字,无法强制显示小数点后两位。要得到8.00的格式,需要先设置fixed,让精度控制作用于小数点后的位数:
将输出语句修改为:
cout << "Answer: " << fixed << setprecision(2);
(由于代码中用了using namespace std;,可以省略std::前缀)
- 优化变量命名(可选)
变量名int1/int2/int3容易产生误导(实际是float类型),建议改为num1/num2/num3,提升代码可读性。
修改后的完整代码
#include <iostream> #include <iomanip> using namespace std; int main (void){ float num1, num2, num3; char op; cout << "Enter operation: "; cin >> op; cout << "Enter number 1: "; cin >> num1; cout << "Enter number 2: "; cin >> num2; cout << "Enter number 3: "; cin >> num3; cout << "Answer: " << fixed << setprecision(2); switch (op) { case '+': cout << num1 + num2 + num3; break; case '-': cout << num1 - num2 - num3; break; case '*': cout << num1 * num2 * num3; break; case '/': cout << num1 / num2 / num3; break; default: cout << "what you inputted is not an operation..."; break; } return 0; }
内容的提问来源于stack exchange,提问作者Ery Pisalbon
相关产品推荐
相关产品推荐

