在学习使用iomanip文件里的控制函数setprecision()及setiosflags(ios::fixed)控制cout流输出输出结果时,遇到问题:同样的格式采用相同的精度输出同一个变量,输出的有效数字不同。
代码如下:
#include
#include //"io"代表输入输出,"manip"是manipulate的缩写,该头文件用于流输入输出的控制
using namespace std;
void main(){
double a=123.456789012345;
double b=123456789;
double c=123.0000001;
cout<<a<<<endl;//将a以10位精度的格式输出
cout<;
cout<<setprecision(6);//将输出精度返回(重置)为6
// cout<(8)<<a<以小数点后固定8位精度的格式输出
cout<<setiosflags(ios::scientific)<(ios::scientific)<<setprecision(4)<(9)<<b<
最后一行语句本来是想输出变量c,
原本最后一行语句是
cout<ios::fixed)<8)<;
但是输出结果是123
不明白为什么会这样,希望大家可以求解!
你应该使用std::fixed
,std::scientific
,而不是setiosflags(ios::fixed)
,setiosflags(ios::scientific)