Новое в программировании. Занятие классом в C. Ниже моя попытка программы, которая будет печатать «Какова ваша почасовая оплата?» затем прочитайте сумму в долларах и рассчитайте заработную плату. Затем напечатайте зарплату в форме: «Ваш общий доход за год составляет X долларов и Y центов.Как выделить центы с суммы в долларах.
Чтобы изолировать доллары от суммы доллара., Я усекал значение, преобразовывая в int из double. I не был уверен, как получить центов, поэтому я решил, что могу вычесть доллары из долларов. (100), и у меня будет число центов.
Я запускаю программу, и она отлично работает, за исключением того, что я не получаю сумму котировок, которую я ожидаю.
Если пользователь вводит 18.33 в качестве почасовой оплаты, тогда я получаю 31826 для общего доллара, 31836,40 для общего дохода. Но когда я их вычитаю и умножаю на 100, Мне дают 39 центов вместо 40.
int main(void) {
double totalIncome = 0.0;
int totalDollars = 0;
int totalCents = 0;
double hourlyWage = 0.0;
int hoursPerWeek = 40;
const int WEEKS_PER_YEAR = 52;
printf("What is your hourly wage? ");
scanf("%lf", &hourlyWage);
totalIncome = hourlyWage * hoursPerWeek * WEEKS_PER_YEAR;
totalDollars = totalIncome; //converts to int from double
totalCents = 10 * (totalIncome - totalDollars);
printf("Your total income over a year is %d dollars and %d cents", totalDollars, totalCents);
return 0;
}
Если вы скомпилируете '-Wall', вы получите какие-либо предупреждения? Я думаю, что то, как вы назначаете totalCents, может привести к потере точности. Но я не уверен на 100%. Скомпилируйте этот флаг и проверьте. –
Я придумал это решение для взлома ... totalCents = ((totalIncome + 0.005) - totalDollars) * 100; –
Я не знаю, что вы имеете в виду -Wall Я новичок в этом –