除法结果始终为零

我得到了这个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; } 

我想知道为什么我的variables“t”总是为零(在printf函数中)?

因为在这个expression中

 t = (1/100) * d; 

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

 t = (0) * d; 

你需要像这样做一个浮动常数

 t = (1.0/100.0) * d; 

你也可能想这样做

 k = n / 3.0; 

您正在使用整数除法,并且1/100将始终以整数除法舍入为零。

如果你想做浮点除法并简单地截断结果,你可以确保你正在使用浮点指针,而d将被隐式转换为你:

 t = (int)((1.0 / 100.0) * d); 

我想是因为

 t = (1/100) * d; 

整数除法= 0的1/100

那么0 * d总是等于0

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

 t = (1/100) * d; 

这总是等于0,你可以做到这一点

 t=(1%100)*d 

并将其添加到0