浮点变量重置为1.000

时间:2015-09-22 19:38:04

标签: c variables math

请参阅以下代码:

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

aq是正确的,但t应该等于大约1.667。为什么这不起作用?

1 个答案:

答案 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可以判断它需要进行浮点除法。

相关问题