运行for循环时输出奇怪

时间:2018-06-03 19:32:29

标签: c for-loop types

我有以下陈述:

const double s=1529340.57;
double f=1-1/1200;
for(j=1;j<=384;j++){
    printf("Age %3d month %2d you have $%.2lf\n", (j+816) / 12, (j+816)%12, s*pow(f,j-1)-4000*((pow(f,j-1)-f)/(f-1)-1));
}

我希望得到以下结果:

Age  68 month  1 you have $1526615.02
Age  68 month  2 you have $1523887.20
Age  68 month  3 you have $1521157.11

等等。

但是,我获得了以下输出:

Age  68 month  1 you have $-1.#J
Age  68 month  2 you have $-1.#J
Age  68 month  3 you have $-1.#J
你知道为什么吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

试试double f=1-1/1200.0;。正如Jean-FrançoisFabre已经提到的那样,1-1 / 1200在你的代码版本中没有被解释为double。 1200.0强制编译器将您的公式处理为十进制。