我有这个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函数中)?
答案 0 :(得分:25)
因为在这个表达式中
t = (1/100) * d;
1和100是整数值,整数除法截断,所以这与此
相同t = (0) * d;
你需要像这样做一个浮点常数
t = (1.0/100.0) * d;
您可能也想对此
做同样的事情k = n / 3.0;
答案 1 :(得分:0)
您正在使用整数除法,并且1/100总是在整数除法中向下舍入为零。
如果你想进行浮点除法并简单地截断结果,你可以确保使用浮点指针文字,而d将为你隐式转换:
t = (int)((1.0 / 100.0) * d);
答案 2 :(得分:0)
我认为是因为
t = (1/100) * d;
1/100作为整数除法= 0
然后0 * d总是等于0
如果你做1.0 / 100.0,我认为它会正常工作
答案 3 :(得分:-2)
t = (1/100) * d;
总是等于0,你可以这样做
t=(1%100)*d
并将其添加到0