Новичок в C, и все математические вычисления немного сбиты

Я нахожусь в классе программирования, где мы только что перешли с python на C. у меня небольшие проблемы с этим, так как C, похоже, не выполняет математические операции с той легкостью, что делает python, или я что-то упускаю, когда дело доходит до математики в C.

Для моей домашней работы я ' m написать программу, которая собирает данные о том, сколько миль проехал автомобиль пользователя, имеющий галлон, сколько у него бензина стоит за галлон и сколько миль он проезжает каждый месяц. Затем программа сообщает им, сколько они могут рассчитывать заплатить за газ в текущем месяце.Мой текущий код выглядит следующим образом:

#include <stdio.h>

int main () {

int mpg, miles;
double gas_price;

printf("How many miles per gallon does your car get?\n");
scanf("%d", &mpg);

printf("What is the price of gasoline per gallon?\n");
scanf("%lf", &gas_price);

printf("How many miles do you drive in a month?\n");
scanf("%d", &miles);

printf("The cost of gas this month is $%.2lf\n", miles / mpg * gas_price);

printf("%d %d %d", mpg, gas_price, miles);

return 0;
}

Когда я запускаю программу со значениями 24 для «миль на галлон», 3,00 для «gas_price» и 1000 для миль, общая сумма составляет 123,00 доллара. Это неверно и примерно на два доллара меньше реальной цены. Когда вы возьмете ((1000/24) * 3.00), у вас должно получиться ровно 125. Я добавил строку, чтобы распечатать все значения, чтобы увидеть, что C использовал для формулы в строке 23, и, хотя mpg и gas_price верны, «мили» отображаются как имеющие значение 1 074 266 112. Я знаю, что здесь должна быть какая-то ошибка, так как это снизит результат более чем на 2 доллара, но я не могу не думать, что это связано.

Прошу прощения за объем вопроса, но я хотел быть как можно более конкретным, и я полностью озадачен тем, почему C так странно читает это.

8
задан ROMANIA_engineer 23 December 2017 в 15:06
поделиться