请参阅以下代码:
float a, q, t;
a = 100 / 25;
q = 100 / 10;
t = 100 / 60;
printf("a: %f\nq: %f\nt: %f\n", a, q, t);
return 0;
这是输出:
a: 4.000000
q: 10.000000
t: 1.000000
a
和q
是正确的,但t
应该等于大约1.667。为什么这不起作用?
答案 0 :(得分:1)
计算机不像人类那样查看数字,而且他们不像人类一样进行数学计算。计算机有两种基本的方式来存储数字和使用。数字是整数(0,1,2 ......)或浮点数,almost but not quite decimal numbers(0.0,1.2,3.14)。
在大多数语言中,该语言将确定您所指的数字类型。 C不是大多数语言,你必须告诉它。
变化:
t = 100 / 60; // integer division
到
t = 100.0f / 60; // float division
前者执行"整数除法"这导致1余数40.其余的被抛出。然后将整数1转换为(" cast")浮点数1.000。
通过使其中一个数字成为一个浮点数(结尾处的f是什么意思)C可以判断它需要进行浮点除法。