如题,这是我自己编的,但是结果总是显示1.000000,麻烦各位大神帮我看看哪里错了。
#include
int main()
{
float s=0,t;
int m,n;
printf("输入数值m:\n");
scanf("%d",&m);
for (n=1;n<=m;n++)
{
if(n%2==1)
t=1/n;
else t=-1/n;
s=s+t;
}
printf("%f\n",s);
return 0;
}
n是整型,执行1/n后也是个整型。代码修改:
#include <stdio.h>
int main()
{
float s=0,t;
float m=4,n;
printf("输入数值m:\n");
scanf("%f",&m);float k=1;
for(n=1;n<=m;n++)
{
t=1/n*k;
k=-k;
s=s+t;
}
printf("%f\n",s);
return 0;
}
扩展资料:
通常情况,单精度浮点数占4字节(32位)内存空间,其数值范围为-3.4E38~3.4E+38,;双精度型占8 个字节(64位)内存空间,其数值范围为-1.79769313486232E308 到1.79769313486232E308。
双精度浮点型类型数值可转换到其他类型的整数或浮点数,反之亦然。双精度浮点型常量的最后一个字符可加上“d”或“D”。其存储格式与浮点型类似,最高位为符号位,次高11位为指数位,其次52位为尾数。
双精度型就是双精度浮点型,同数值型比,它能提供更高的数值精度,采用固定存储长度的浮点数形式,每个双精度浮点型数据占8个字节。与数值型数据不同,它的小数点位置是由输入的数据值来决定的,并且只能用于表中的字段。
参考资料:
/*
输入数值n:10
0.645635
Press any key to continue
*/
#include <stdio.h>