#include <stdio.h>
int main(void) {
float interest_rate, amount_of_loan, monthly_payment, remain_payment;
printf("Enter amount of loan :");
scanf("%f", &amount_of_loan);
printf("Enter interest rate :");
scanf("%f", &interest_rate); // this is a interest rate per a year
printf("Monthly interest rate is : %.1f\n" , (interest_rate / 12)); // 퍼센트를 표현하는 방법
((interest_rate / 12) * 0.01); //it would be 0.005
printf("Enter monthly payment : ");
scanf("%f", &monthly_payment);
remain_payment = (amount_of_loan + (amount_of_loan * ((interest_rate / 12) * 0.01))) - monthly_payment;
printf("Balance remaining after first payment : %.2f\n", remain_payment);
// 0.005 is interest value and the payment is 386.66
remain_payment = (remain_payment + (amount_of_loan * ((interest_rate / 12) * 0.01))) - monthly_payment;
printf("Balance remaining after second payment :%.2f\n", remain_payment);
remain_payment = (remain_payment + (amount_of_loan * ((interest_rate / 12) * 0.01))) - monthly_payment;
printf("Balance remaining after third payment :%.2f\n", remain_payment);
return 0;
}
我必须使用
floor
函数的向下舍入函数吗?
我在
<math.h>
文件中搜索了向上和向下舍入函数,但我无法得到确切的结果我想我知道为什么我无法得到确切的答案,我猜的原因是 float 类型存储我的输入大约。
但我想得到我想要的精确输出
您遇到了有时被称为复制和粘贴错误的教科书示例。
你先写了
remain_payment = (amount_of_loan + (amount_of_loan * ((interest_rate / 12) * 0.01))) - monthly_payment;
准确计算出第一次付款后的余额
但是你试图通过写作来计算第二笔付款
remain_payment = (remain_payment + (amount_of_loan * ((interest_rate / 12) * 0.01))) - monthly_payment;
但是您应该根据之前的运行余额来计算下一次剩余付款。原贷款金额不计入。您将
amount_of_loan
的一个实例更改为 remain_payment
,但您应该同时更改两者。