Результат разделения всегда равен нулю
Я получил этот код.
#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)?
Ответы
Ответ 1
потому что в этом выражении
t = (1/100) * d;
1 и 100 - целые значения, усечения целых делений, так что это то же, что и этот
t = (0) * d;
вам нужно сделать так, чтобы константа с плавающей точкой
t = (1.0/100.0) * d;
вы также можете сделать то же самое с этим
k = n / 3.0;
Ответ 2
Вы используете целочисленное деление, а 1/100 всегда округляется до нуля в целых делениях.
Если вы хотите сделать деление с плавающей запятой и просто обрезать результат, вы можете убедиться, что вместо этого используете литеры с плавающим указателем, и d будет неявно преобразован для вас:
t = (int)((1.0 / 100.0) * d);
Ответ 3
Я думаю, что из-за
t = (1/100) * d;
1/100 как целое деление = 0
то 0 * d всегда равно 0
если вы делаете 1.0/100.0, я думаю, что он будет работать правильно
Ответ 4
t = (1/100) * d;
Это всегда равно 0, вы можете сделать это
t=(1%100)*d
и добавьте его к 0