我用下面的程序比较了两个账户,一个是单利账户,另一个是复利账户,我确信我21.47亿年的计算结果是错误的,有人能给我指出一个错误吗?
#include <stdio.h>
int main(void) {
int simp_acct = 100, comp_acct = 100, years;
simp_acct += 10; /*simple interest*/
comp_acct *= .05; /*compound interest*/
while(comp_acct < simp_acct) {
simp_acct += 10;
comp_acct *= .05;
years++;
}
printf("Compound interest at .05%% beats simple interest at 10%% ");
printf("after %d years.\n", years);
return 0;
}
最佳答案
将变量更改为float
:
float simp_acct = 100, comp_acct = 100, years;
否则,当您乘以一个分数时,您的值将四舍五入为整数。
你还需要修正复利公式,它应该是:
comp_acct *= 1.05;
你只是把
comp_acct
设置为兴趣,而失去了原则。关于c - C程序复合与简单兴趣,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24616512/