实数的输出格式
描述
利用流操纵算子实现: 输入一个实数,先以非科学计数法输出,小数点后面保留5位有效数字;再以科学计数法输出,小数点后面保留7位有效数字。
注意:在不同系统、编译器上的输出格式略有不同,但你需要采用正确的方法保证在程序中采用默认格式设置一定能在OJ平台上得到正确结果。
输入
以非科学计数法表示的一个正实数,保证可以用double类型存储。
输出
第一行:以非科学计数法输出该实数,小数点后面保留5位有效数字;
第二行:以科学计数法输出该实数,小数点后面保留7位有效数字。
输入样例 1
12.34
输出样例 1
12.34000 1.2340000e+01
废话先不多说上代码
#include <iostream>
#include<iomanip>//setiosflags resetiosflags resetiosflags
using namespace std;
int main()
{
double n;
cin>>n;
cout<<setiosflags(ios_base::fixed)//定点形式显示浮点数值
//<<setiosflags(ios_base::left)//左对齐
<<setprecision(5)//精度设置
<<n<<resetiosflags(ios_base::fixed)<<endl;
cout<<setiosflags(ios_base::scientific)//科学计数法
<< setprecision(7)//精度设置
<<n<<resetiosflags(ios_base::scientific)<<endl;
return 0;
}
通过使用带参数的setiosflags操纵符来设置输出的格式,setiosflags定义在iomanip中。括号里的参数决定输出格式ios_base::fixed 是输出浮点数格式,而ios_base::scientific是输出科学计数法形式。
通过setprecision来规定输出的精度;
重点!!!!
setiosflags对于输出格式的影响是持久的,再进行下一次输出之前必须关闭它的作用,这里用的就是resetiosflags来关闭,从新恢复到默认值。亲测,如果不关闭,后面的操作都不会起作用的,它会一直保持第一次的格式!!