我有以下陈述:
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
你知道为什么吗?
谢谢!
答案 0 :(得分:0)
试试double f=1-1/1200.0;
。正如Jean-FrançoisFabre已经提到的那样,1-1 / 1200在你的代码版本中没有被解释为double。 1200.0强制编译器将您的公式处理为十进制。