除法结果始终为零
我得到了这个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