我用下面的程序比较了两个账户,一个是单利账户,另一个是复利账户,我确信我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/

10-14 09:08