zwy12138 发表于 2015-7-27 11:08:23

为什么结果为0.000000?

#include <stdio.h>
void main()
{
        double PI=3.14159;
        int s,r=5;
        s=r*r*PI;
        printf("s=%f\n",s);
}

为什么结果为0.000000?

迪拜~战阳 发表于 2015-7-27 11:08:24

#include <stdio.h>
void main()
{
      double PI=3.14159;
      int s,r=5;   //这里的类型和PI类型不一致要改为float 或double,而不是int
      s=r*r*PI;
      printf("s=%f\n",s);
}

weisuo 发表于 2015-7-27 12:06:45

顶    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

weisuo 发表于 2015-7-27 12:08:08

weisuo 发表于 2015-7-27 12:10:09

哥斯拉不说话 发表于 2015-7-27 12:25:58

s 是整型,打印的时候用 %d

ryxcaixia 发表于 2015-7-27 12:50:05

#include <stdio.h>
void main()
{
        double PI=3.14159;
        float s,r=5;
        s=r*r*PI;
        printf("s=%f\n",s);
}

迪拜~战阳 发表于 2015-7-27 22:27:40

printf("s=%f\n",s);double 最好是%lf

我的名字要很长 发表于 2015-8-1 16:56:36

因为,S是整型,而PI是实型,因而在计算过程中,编译器会把PI转换为整型,中间就会丢失小数部分的数据.而后面,你又把S转换为实型输出,所以,就会出现这种情况

Michael-Bern 发表于 2015-8-12 21:01:38

int s,r=5;      改成   float s,r=5.0
页: [1]
查看完整版本: 为什么结果为0.000000?