c语言科学计数法输出
‘壹’ c语言中,用科学计数法的格式输出很大的int数据时,怎么输出的
需要用大整数运算,结果一般用char数组保存,输出的时候需要用循环。
用char数组保存的时候,最好不要用'0'-'9'来表示,直裂早接用'\肆指雀0'-'\9'逗简表示,这样运算性能比较高。
‘贰’ C语言科学记数法
double a = 1.2e5
char buf[100]
sprintf(buf, "%e", a);/*先sprintf %e 输出到字符数组,然后再去对字符数组里的字符串做此闹罩适当的调整*/
.......剩下的代码就是看森闹你字符弯森串 处理 功力了
‘叁’ c语言中printf("%08.2f,%08.2e",x,x)是什么意思
printf("%08.2f,%08.2e",x,x)中的"%08.2f,%08.2e"叫控制输出格式字符串(不含前后双引号),这里的具碧银体意思如漏首下:
%08.2f——将变量x的值按浮点数返慧数在屏幕上输出,占宽8位右对齐,四舍五入保留2位小数;数长不足8位时前面用0补齐,超过8位时按实际长度输出。
接着输出一个逗号。
%08.2e——将变量x的值按浮点数科学计数法在屏幕上输出,其余同上。
‘肆’ c语言 科学计数法输出问题
1、1e-10是C/C++规定的浮点数的科学计数写法,意思是1.0x10的-10次方。这个记数法有一些要求,一是e前面整数部分为1位的浮点数,如1.0、3.3、9.999978901等(但不按这个规则写,如123.4E-3编译器也认可);二时e可以大写也可以小写;三是e后面紧跟带符号的十
进制整数,长度最大为3位,正数时可不写+号。所以,1.234E-2、1.234e-02、1.234E-002等其实是一个意思。
2、C语言中数e(指数e)可以用exp( )函数表示。
函数原型:double exp(double x);
功 能:计算e^x的值
返 回 值:计算结果
举例:
double x=1.5, y;
y = exp(x); // y的值就是e^1.5
注:使用exp函数时,需要将头文件#include<math.h>添加进源文件中。
‘伍’ C语言里要对输出的结果用科学计数法表示保留三位有效数字应该怎么写啊
sorry.由于没有在计算机旁,没有及时看到你的求助,你问:C语言里要对输出的结果用科学计数法表示保留三位有效数字应该怎么写?
我觉得应该是
printf("%.3e",变量名);
而不是
printf("%3e",变量名);
==================
MSDN 中有关printf打印格式串:
%[flags] [width] [.precision] [{h | l | I64 | L}]type
的描述,其中对[.precision]是这么说的:
The third optional field of the format specification is the precision specification.
(大义:格式规约中第三个选项段是关于小数的规则。)
==================
对于打印e, E类型的数据时,[.precision]选项的作用是:
The precision specifies the number of digits to be printed after the decimal point. The last printed digit is rounded.
(大义:该精度指定了打印小数点后的位数,之后的位数会被四舍五入)
Default precision is 6; if precision is 0 or the period (.) appears without a number following it, no decimal point is printed.
(大义:缺省情况下,该精度为6,如果精度值为0或者小数点后没有紧跟着数字,则不会打印小数部分)
==================
例:
#include <stdio.h>
int main()
{
float b = 100000.55555f;
printf("%3e\n",b);
printf("%.3e\n",b);
return 0;
}
输出结果为:
1.000006e+005
1.000e+005
‘陆’ c语言,输出科学计数法
#include<stdio.h>
#include<string.h>
charnum[110];
charresult[110];
intlen;
intmain()
{
inti,j;
ints1,s2;//小数点位置,字符串首个非零数位置
intfind1=0;
intfind2=0;//find1:是否找到小数点位置标志位,find2:是否找到首个非零数位置,0:表示未找到
intindex;
scanf("%s",num);
len=strlen(num);//读取字符串长度
for(i=0;i<len;++i)//寻找原字符串中小数点与首个非零数的位置
{
if(find1&&find2)
break;
if(num[i]=='.'){
s1=i;
find1=1;
}
elseif(num[i]!='0'&&!find2){
find2=1;
s2=i;
}
}
if(s1-s2>0)//根据二个位置确定指数大小
index=s1-s2-1;
elseif(s2>s1)
index=s1-s2;
j=0;
for(i=s2;i<len;++i)//确定底数
{
if(num[i]=='.')
continue;
elseif(i==s2){//确定底数小数点位置
if(num[i+1]){
result[j++]=num[i];
result[j++]='.';
}
else
result[j++]=num[i];
}
else
result[j++]=num[i];
}
result[j]='