复利计算器给出错误答案
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
调用。
我写了一个计算复利的程序。
这是代码:
#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
调用。