2.浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。
3.浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。
一个浮点数a由两个数m和e来表示:a = m × b^e。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。磨纳如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是判毕正的。e是指数。
#include<stdio.h>#include<string.h>
int main()
{
char s1[410],s2[410]
int a[410],b[410],c[410],d[410]
int i,j,k,len1,len2,s,t,num1,num2
while(scanf("%s %s",s1,s2)!=EOF)
{
for(i=0i<=409i++)
{
a[i]=0
b[i]=0
c[i]=0
d[i]=0
}
s=len1=strlen(s1)
t=len2=strlen(s2)
for(i=0i<len1i++)
if(s1[i]=='.')
{
s=i
break
}
for(i=0i<len2i++)
if(s2[i]=='.')
{
t=i
break
}
k=0
for(j=s-1j>=0j--)
a[k++]=s1[j]-'0'
k=0
for(j=t-1j>=0j--)
b[k++]=s2[j]-'0'
k=1
if(s+1<len1)
for(j=s+1j<=len1-1j++)
c[k++]=s1[j]-'0'
k=1
if(t+1<len2)
for(j=t+1j<=len2-1j++)
d[k++]=s2[j]-'0'
num1=len1-s>len2-t?len1-s:len2-t
for(i=num1i>=1i--)
{
耐行 c[i]+=d[i]
if(c[i]>=10)
{
轿亩逗 c[i]-=10
c[i-1]++
}
}
num2=s-1>t-1?s-1:t-1
a[0]+=c[0]
for(i=0i<=num2i++)
{
a[i]+=b[i]
if(a[i]>=10)
{
a[i]-=10
a[i+1]++
}
}
if(a[num2+1]>0)
printf("%d",a[num2+1])
闭卖 for(i=num2i>=0i--)
printf("%d",a[i])
for(i=num1i>=1i--)
{
if(c[i]==0)
continue
else
break
}
if(i==0)
else
{
printf(".")
for(j=1j<=ij++)
printf("%d",c[j])
}
printf("\n")
}
return 0
}
这是小数加法的代码,你参考下哈。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)