题目链接:
解题思路:
科学计数法:
- 整数计数法:
(1)7.823E5=782300,这种表示方式就是:E代表10,E后面的数代表的是指数位,例如这里的5代表指数是10的5次方
(2)1234567 = 1.234567E+6,这种表示方式是:1.表示的是1.234567乘以后面的数,也就是后面的E+6表示的是10的6次方
- 小数计数法
(1)1.23456e+002 ,这个数的表示方式就是,e+002 表示10 的2次方,这里的数就是123.456。
(2)202 +0.00000E+00,这样的数就是表示为202加上后面有个精确到小数点后五位的数
在 printf 函数中使用格式控制符来输出指数形式的小数
在 C++ 我们可以用关键字 scientific 来实现指数形式的打印
只不过这俩种方式只能输出后俩位
而该题目要求输出后三位
所以我们可以自己编写一个求科学计数法的函数
参考代码:
#include<bits/stdc++.h>
using namespace std;
double a = 3.1415926,b = 12345678.123456789;
void solve (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( )
{
solve(a);
cout << endl;
solve(b);
return 0;
}