Как использовать десятичные числа целого

77
14

Я хотел бы переплатить, чтобы отобразить переплату в качестве общей суммы, уплаченной, если результат не был округлен. calculateMonths должно быть целым числом, что делает это намного сложнее. Я попытался использовать

double dblCalculateMonths = (double)calculateMonths(principal, annualInterestRate, monthlyPayment);

но это не сработало. Я не уверен, как исправить эту проблему, сохраняя calculateMonths как целое число. Помощь очень ценится!

Я хотел бы, чтобы результаты выглядели так:

** Welcome to the CPSC 1010-S3 Payment Calculator **
Enter the principal amount: 5000.00
Enter the annual interest rate (in %): 15.0
Enter the monthly payment: 100.00
Calculating...
Total # of months needed to pay off: 79
App roximate # of years needed to pay off: 6.6
Total interest paid: $2900.00
Total amount paid: $7900.00
You overpaid: $4.43

Но последняя строка отображается как

You overpaid: $100.00

Я не знаю, как это изменить. Мой список кодов ниже

#include <stdio.h>
#include <math.h>

int calculateMonths(double principal,double annualInterestRate,double monthlyPayment)
{
double x = ((log(monthlyPayment)-log(monthlyPayment-annualInterestRate/1200.0*principal))/log(annualInterestRate/1200.0+1.0));
return x;
}

int main()
{
double principal, annualInterestRate, monthlyPayment;

printf("** Welcome to the Payment Calculator **\n\n");

printf("Enter the principal amount:\t\t\t");
scanf("%lf", &principal);

printf("Enter the annual interest rate (in%%):\t\t");
scanf("%lf", &annualInterestRate);

printf("Enter the monthly payment:\t\t\t");
scanf("%lf", &monthlyPayment);

printf("\nCalculating...\n\n");

double roundedMonths = calculateMonths(principal, annualInterestRate, monthlyPayment)+1;
printf("Total # of months needed to pay off:\t\t %.0f\n", roundedMonths);

double years = roundedMonths/12;
printf("Approcimate # of years needed to pay off: \t %.1f\n", years);

double amountPaid = roundedMonths * monthlyPayment;
double interestPaid = amountPaid-principal;

printf("Total interest paid:\t\t\t\t $%.2f\n", interestPaid);
printf("Total amount paid:\t\t\t\t $%.2f\n", amountPaid);

double dblCalculateMonths = (double)calculateMonths(principal, annualInterestRate, monthlyPayment);
double overpay = amountPaid - dblCalculateMonths*monthlyPayment;
printf("You overpaid:\t\t\t\t $%.2f\n", overpay);

printf("%f", dblCalculateMonths);

printf("\n\n");

return(0);
}

спросил(а) 2021-01-09T15:27:42+03:00 3 месяца, 1 неделя назад
1
Решение
62

какова логика в том, чтобы вычислятьMonths() целое число? сделайте его двойным, и он должен работать.

double calculateMonths(double principal,double annualInterestRate,double monthlyPayment)

и сделать roundedMonths целым числом. Также вы можете добавить 0.5 для правильного раунда.

int roundedMonths = calculateMonths(principal, annualInterestRate, monthlyPayment)+0.5;
printf("Total # of months needed to pay off:\t\t %d\n", roundedMonths);

LE: Попробуйте следующее:

int calculateMonths(double principal,double annualInterestRate,double monthlyPayment, double *dblCalculateMonths)
{
*dblCalculateMonths = ((log(monthlyPayment)-log(monthlyPayment-annualInterestRate/1200.0*principal))/log(annualInterestRate/1200.0+1.0));
return *dblCalculateMonths;
}

int main()
{
double principal, annualInterestRate, monthlyPayment, dblCalculateMonths;

printf("** Welcome to the Payment Calculator **\n\n");

printf("Enter the principal amount:\t\t\t");
scanf("%lf", &principal);

printf("Enter the annual interest rate (in%%):\t\t");
scanf("%lf", &annualInterestRate);

printf("Enter the monthly payment:\t\t\t");
scanf("%lf", &monthlyPayment);

printf("\nCalculating...\n\n");

double roundedMonths = calculateMonths(principal, annualInterestRate, monthlyPayment, &dblCalculateMonths)+1;
printf("Total # of months needed to pay off:\t\t %.0f\n", roundedMonths);

double years = roundedMonths/12;
printf("Approcimate # of years needed to pay off: \t %.1f\n", years);

double amountPaid = roundedMonths * monthlyPayment;
double interestPaid = amountPaid-principal;

printf("Total interest paid:\t\t\t\t $%.2f\n", interestPaid);
printf("Total amount paid:\t\t\t\t $%.2f\n", amountPaid);

double overpay = amountPaid - dblCalculateMonths*monthlyPayment;
printf("You overpaid:\t\t\t\t $%.2f\n", overpay);

printf("%f", dblCalculateMonths);

printf("\n\n");

return(0);
}

ответил(а) 2021-01-09T15:27:42+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема