墨文和 发表于 2021-10-5 19:40:46

求助各位大佬们

#include<stdio.h>

int main()
{
        float a,b,c,sum;
        a=1;
        b=0.5;
        c=1/3;
       
        sum=a+b+c;
        printf("结果是:%.2f",sum);
       
}
为什么sum是1.50而不是1.83;怎么样求得到1/3的值?

大马强 发表于 2021-10-5 19:44:08

#include<stdio.h>

int main()
{
      float a,b,c,sum;
      a=1;
      b=0.5;
      c=1.0/3.0;
      
      sum=a+b+c;
      printf("结果是:%.2f",sum);
      
}

人造人 发表于 2021-10-5 19:44:18

1.0 / 3
或者
1 / 3.0
或者
1.0 / 3.0

大马强 发表于 2021-10-5 19:45:58

1/3 在编译器看来你是要将两个整型相除,结果小于一直接就向下取整成0了
所以结果是1 + 0.5 +0

大马强 发表于 2021-10-5 19:46:54

其实只要 其中一方为浮点数就可以了,会隐式转换成两浮点数相除

墨文和 发表于 2021-10-5 20:03:33

大马强 发表于 2021-10-5 19:44


谢谢了(*^_^*)&#128536;

墨文和 发表于 2021-10-5 20:04:28

人造人 发表于 2021-10-5 19:44
1.0 / 3
或者
1 / 3.0


谢谢了(*^_^*)

傻眼貓咪 发表于 2021-10-5 20:05:26

本帖最后由 傻眼貓咪 于 2021-10-5 20:07 编辑

整数/整数 = 整数
浮点数/整数 = 浮点数
浮点数/浮点数 = 浮点数
范例:#include <stdio.h>

int main(){
    float num;
    num = 1/3; // 这里整数/整数 = 整数,然后赋值于num变成浮点(1/3 = 0,num = 0.00)
    printf("%.2f", num);
    return 0;
}0.00
页: [1]
查看完整版本: 求助各位大佬们