函数没有将整个值返回给main
我试图让我的函数将 M 的值返回给 main,但它没有返回完整的值。例如,M = 397.73,但是在 main 中调用打印时,它只返回 397.00。我尝试使用的输入是 100000、2.55、30。这就是为什么我的预期输出是 397.73。
int main(void) {
int loanAmount;
double APR;
int time;
double M;
printf("Enter in loan amount:n");
scanf("%d", &loanAmount);
printf("Enter APR: n");
scanf("%lf", &APR);
printf("Enter loan time (years): n");
scanf("%d", &time);
printf("Loan amount: %7dnAPR: %13.2f%%nTime of loan: %d yearsn", loanAmount, APR, time);
M = CalculatePayment(M, loanAmount, APR, time);
printf("%.2lf", M); //This is where my issue comes from, this only prints partial of M.
return 0;
}
int CalculatePayment(double M, int P, double c, int d) {
//M= P * r(1+r)^n/(1+r)^n-1
int n = d * 12; //number of months of loan.
double IM = (c / 100) / 12; //monthly interest rate.
M = P * ((IM * pow(1 + IM, n)) / (pow(1+IM, n) - 1)); // calculates monthly payment.
printf("%.2lfn", M);
return M;
}
回答
的返回类型CalculatePayment是int,因此返回值被截断为整数。
使用double作为返回类型来代替。