2014-10-10 113 views
-3

我试图做一个未来价值计算器,我不允许使用幂函数。计算未来价值的公式是未来值=本金*(1 +利率)^(期数)。现在你不能在C中使用^作为指数,所以我尝试使用base和exponent概念,它给了我最接近的答案,但仍然是不正确的。它给了我一个价值,但它不是正确答案,而且太大了。如果您需要更多信息,请询问。未来价值计算器和指数

试运行:

投资计算器

负责人:1000年度 率:0.06 无数年来的:5 未来值为$ 1338225577600000.000000

预期的结果为$ 1338.23。

#include<stdio.h> 

double FutureVal(double prin, double rate,int years); 

int main() 
{ 

    double principal; 
    double annualRate; 
    int NumYears; 
    double result; 


    printf("Investment Calculator\n"); 
    printf("=====================\n"); 

    printf("Principal : "); 
    scanf("%lf",&principal); 

    printf("Annual Rate: "); 
    scanf("%lf",&annualRate); 

    printf("No of Years: "); 
    scanf("%d",&NumYears); 

    result = FutureVal(principal,annualRate,NumYears); 

    printf("The future value is $%lf \n",result); 

    return 0; 

} 

double FutureVal(double prin, double rate, int years) 
{ 
    int i; 
    double value = (prin * (1 + rate)) ; 
    double result = 1; 

    for (i = 0; i < years; i++) 
    { 
      result *= value; 
    } 
    return result; 

} 
+0

你尝试调试代码看看计算出错的地方? – xxbbcc 2014-10-10 18:42:59

+0

对不起,它的C.只是,只要我谷歌的帮助打字C给你很多结果,所以我假设它的所谓的C#。 – Jenis 2014-10-10 18:44:04

+0

为什么你使用value =(prin *(1 + rate)); .........不应该只是value =(1 + rate); – 2014-10-10 19:02:03

回答

0

功能下面将做任务:

double FutureVal(double prin, double rate, int years) 
{ 
    int i; 
    double value = 1 + rate ; 
    double result = 1; 

    for (i = 0; i < years; i++) 
    { 
      result *= value; 
    } 
    result *= prin; 
    return result; 
} 

由于公式中寻找量的

prin * ((1+rate)^years) 

和你正在做的是:

(prin*(1+rate))^years 

这就是不正确的原因输出中

PS:如果你想通过你提到的小数点后显示只有2位,用途:

printf("The future value is $%.2lf \n",result); 

在main方法的函数调用后