Результатом подразделения всегда является нуль [дубликат]

17
задан Jayant Tripathi 27 July 2016 в 20:33
поделиться

3 ответа

поскольку в этом выражении

t = (1/100) * d;

1 и 100 - целочисленные значения, целочисленное деление усекает, так что это То же самое, что и это

t = (0) * d;

вам нужно сделать это константой с плавающей точкой, как это

t = (1.0/100.0) * d;

вы также можете захотеть сделать то же самое с этим

k = n / 3.0;
26
ответ дан 30 November 2019 в 13:20
поделиться

Я думаю, это из-за

t = (1/100) * d;

1/100, поскольку целочисленное деление = 0

, тогда 0 * d всегда равно 0

, если вы это сделаете 1.0 / 100.0 Думаю, он будет работать правильно

0
ответ дан 30 November 2019 в 13:20
поделиться

Вы используете целочисленное деление, а 1/100 всегда округляется до нуля при целочисленном делении.

Если вы хотите выполнить деление с плавающей точкой и просто усечь результат, вы можете убедиться, что вместо этого используете литералы с плавающим указателем, и d будет неявно преобразовано для вас:

t = (int)((1.0 / 100.0) * d);
0
ответ дан 30 November 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: