我写了一个计算你需要支付的金额的程序。用户输入他们的本金金额,利率和时间段,然后程序给他们将来必须支付的金额。当我运行程序时,最终结果或我需要支付的金额太大或不正确。这是代码:
#include <stdio.h>
int calculation_1(int principal, int rate, int years);
int main(void) {
int amount1, amount3;
double amount2, total;
printf("Investement Calculator \n");
printf("====================== \n");
printf("Principal : ");
scanf("%d", &amount1);
printf("Annual Rate: ");
scanf("%lf", &amount2);
printf("No of Years: ");
scanf("%d", &amount3);
total = calculation_1(amount1, amount2, amount3);
printf("The future value is: $%.2f \n", total);
return 0;
}
int calculation_1(int principal, int rate, int years) {
double subtotal,final;
subtotal = principal * (1 + rate) * years;
return subtotal;
}
我测试了这些值:1000为校长,0.06为速率,5年为无年。最终结果应该是$ 1338.23,但我得到$ 5000.00。这是我用来计算金额的公式:
total = principal * (1 + rate) ^number of years.
我无法弄清楚我做错了什么。
答案 0 :(得分:4)
您的公式没有正确指定:
subtotal = principal * (1 + rate) * years;
应该是
subtotal = principal * pow((1 + rate),years);
另请参阅另一个答案(@ameycu)..您的数据类型不匹配。
答案 1 :(得分:2)
int calculation_1(int principal, int rate, int years) //change 2nd parameter type to double
函数需要2个参数作为int
类型,并在调用double
时将main
传递给它 -
total = calculation_1(amount1, amount2, amount3);
/* amount2 is declared as double */
因此,由于amount2
中的这一部分部分将被丢弃,这可能导致错误答案。
你需要使用函数pow
在公式中使用,以便在数学公式中得到这个表达式: