复利计算器给出错误答案

Compound interest calculator giving incorrect answer

我写了一个计算复利的程序。
这是代码:

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

int main(void) {                                                                 
    float value, rate, years,r;                                                     
    int column = 0, tmp;                                                            

    printf("Enter money values: ");                                                 
    scanf("%f",&value);                                                             

    printf("Enter a interest rate: ");                                              
    scanf("%f",&rate);                                                              

    printf("Enter number of years: ");                                              
    scanf("%f",&years);                                                             

    printf("\nYears  ");                                                            

    tmp = rate + 4;                                                                 
    r = rate;                                                                       

    for (int a = rate; a <= tmp; a++) {                                              
        printf("  %d  ", a);                                                         
        column++;                                                                   
    }                                                                               

    for (int b = 1; b <= column; b++) {                                              
        printf("\n  %d",b);
        for (int i = 1; i<= column; i++) {
            printf(" %.2f ", (float) pow ( (value)*(1.0+((r/100.0)/(1.0))) , (1.0*b))
            r++;
        }                                                            
        r = rate;
        printf("\n");
    }                                                                               
    
    // I = P*R*T                                                                    
    // P= AMOUNT (value)                                                            
    // R=RATE (r)                                                                   
    // T=YEARS (b)                                                                  
    return 0;  
}

它向用户询问一个值(货币)、利率、年数,并像这样显示利率:

Enter money values: 100
Enter a interest rate: 6
Enter number of years: 5

Years    6    7    8    9    10  
  1 106.00  107.00  108.00  109.00  110.00 

  2 11236.00  11449.00  11664.00  11881.00  12100.00 

  3 1191016.00  1225043.00  1259712.00  1295029.00  1331000.00 

  4 126247696.00  131079600.00  136048896.00  141158160.00  146410000.00 

  5 13382255616.00  14025517056.00  14693280768.00  15386240000.00  16105100288.00 

但是我的问题是浮点计算。 正如您可能能够分辨出上面输出中的数字,并且很长并且有很多尾随数字 我很困惑。

例如第二行第一个输出是11236.00, 这是错误的,因为它应该输出 112.36 但由于某种原因小数点移动了 向前两个空格。为什么是这样?我该如何解决这个问题并打印正确的解决方案 小数点在正确的位置。

pow 中有 value。因此,当您对两年进行平方时,您就是在对金额进行平方。移动 (value)* 以输出 pow 调用。