21

我得到了这个 C 代码。

#include <stdio.h>

int main(void)
{
        int n, d, i;
        double t=0, k;
        scanf("%d %d", &n, &d);
        t = (1/100) * d;
        k = n / 3;
        printf("%.2lf\t%.2lf\n", t, k);
        return 0;
}

我想知道为什么我的变量 't' 总是为零(在 printf 函数中)?

4

4 回答 4

31

因为在这个表达式中

t = (1/100) * d;

1和100是整数值,整数除法截断,所以this和this一样

t = (0) * d;

你需要把它变成一个像这样的浮点常量

t = (1.0/100.0) * d;

你可能也想这样做

k = n / 3.0;
于 2010-02-27T01:38:59.930 回答
0

您正在使用整数除法,并且 1/100 在整数除法中总是向下舍入为零。

如果您想进行浮点除法并简单地截断结果,您可以确保您使用的是浮点字面量,并且 d 将为您隐式转换:

t = (int)((1.0 / 100.0) * d);
于 2010-02-27T01:38:34.960 回答
0

我认为是因为

t = (1/100) * d;

1/100 作为整数除法 = 0

那么 0 * d 总是等于 0

如果你做 1.0/100.0 我认为它会正常工作

于 2010-02-27T01:40:01.970 回答
-3
t = (1/100) * d; 

那总是等于0,你可以这样做

t=(1%100)*d 

并将其添加到 0

于 2016-11-13T11:32:37.807 回答