例子:输入:无
输出:
3.141593 3.141593e+000 12345678.123457 1.234568e+007
e+000 相当于乘以10的0次方
e+007相当于乘以10的7次方
如何使用科学计数法:在printf();里用%e的一个格式控制符。另一种是cout <<scientific << num;意思是输出变量num的指数形式。但这两种方法输出后面只有两位的整数,而这个例子有三位
可以通过下面的方法:
#include <bits/stdc++.h>
using namespace std;
double a = 3.1415926;
double b = 12345678.123456789;
void sovel(double a)
{
printf("%.6lf ",a);
int i=0;
while(a>10)
{
a=a/10.0;
i++;
}
printf("%.6lfe+",a);
cout << setw(3) << setfill('0') << i;
return ;
}
int main()
{
sovel(a);
cout << endl;
sovel(b);
return 0;
}
定义全局变量a和b,分别赋值为3.1415926和12345678.123456789。
定义函数sovel,参数为一个double类型的数值a。
在函数sovel中,首先用printf函数按照6位小数格式输出a的值。
使用一个while循环,当a大于10时,除以10并且用一个变量i记录除以的次数。
在循环结束后,再次用printf函数按照6位小数的格式输出a的值。
使用cout << setw(3) << setfill(‘0’) << i;输出i的值,setw(3)表示宽度为3并填充0,即保留3位有效数字并且不足3位用0填充。
在main函数中,先调用sovel函数处理a,再调用sovel函数处理b,最后返回0结束程序运行