Cathy-Chen258 发表于 2020-11-6 10:15:24

C语言中float算术运算问题(初学者)

本帖最后由 Cathy-Chen258 于 2020-11-6 10:17 编辑

#include <stdio.h>
int main()
{
        float f,c;
        f=90.0;
        c=(5.0/9)*(f-32);
        printf("f=%f\n c=%f\n",f,c);
}


1.为什么“c=(5.0/9)*(f-32)“中要打”5.0“?
2.打”5“运算c=0?
3.其他的“9”、“32”不用精确度?

shooan 发表于 2020-11-6 10:25:08

这三个其实都是同一个问题
回答1.      写成 5.0 表示要进行 浮点数的除法,结果是浮点数
回答2.      在C语言中,整数除法的结果只能是整数,所以 5/9的结果是0
回答3.      9、32 不用写成小数的形式是因为,如果一个表达式里面有小数的话,那么,整个表达式的结果就是小数了(术语叫做隐式类型提升)。前面已经5.0 是小数了,所以这里可以不写成9.0、32.0

Cathy-Chen258 发表于 2020-11-6 10:31:40

shooan 发表于 2020-11-6 10:25
这三个其实都是同一个问题
回答1.      写成 5.0 表示要进行 浮点数的除法,结果是浮点数
回答2.      在 ...

ok谢谢你详细解答我可以理解了{:5_110:}{:5_109:}

Cathy-Chen258 发表于 2020-11-6 11:05:27

shooan 发表于 2020-11-6 10:25
这三个其实都是同一个问题
回答1.      写成 5.0 表示要进行 浮点数的除法,结果是浮点数
回答2.      在 ...

再问一下如果用“9/5”运算c=1是吗?

shooan 发表于 2020-11-6 12:16:59

Cathy-Chen258 发表于 2020-11-6 11:05
再问一下如果用“9/5”运算c=1是吗?

是的

Cathy-Chen258 发表于 2020-11-7 16:34:43

shooan 发表于 2020-11-6 12:16
是的

好的谢谢你^-^
页: [1]
查看完整版本: C语言中float算术运算问题(初学者)