C语言 复利计算器给出了错误的答案



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

#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呼叫

最新更新