C语言答案写成科学记数法,c语言科学记数法_C语言中、科学计数法123456e+002具体代表什么意思、或者说怎么理解这个数_淘题吧...

『壹』 c语言用double写了一个表示科学计数法的程序,但是却读不出来30位以上的数,怎么办

double 是抄64 位(8字节),52 位代表有袭效数位,11 位表示指数,一位表示符号,精度(有效数位)十进制的 16 位。int64 的有效数位不过是20位,int128 的有效数位不过是40位,long double(double128)的有效数位不过是34位。何况 int128、double128 的原子类型(cpu、fpu 内寄存器支持)目前还没有在 PC 机实现。

网上说double的精度可以到50多位,这是不可能的!

『贰』 C语言中、科学计数法1.23456e+002具体代表什么意思、或者说怎么理解这个数

e+002 表示10 的2次方。 科学计数法, 用e 表示10 , 加号表示正整数次方, 减号,表示负整数次方, 这里就是等于 123.456

『叁』 C语言 科学计数法

do {

a1[i++]=getchar();

}while (a1[i]!='.');

这儿的判断不对,因为此时a1[i]还没有值。

『肆』 c语言,输出科学计数法

#include

#include

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

{

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

{

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]='

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值