计算 for 循环中的复利

Calculate compound interest in a for loop

本文关键字:for 循环 计算      更新时间:2023-10-16
//calculate on interest rate
for(rate=0.05; rate <=0.1; rate++)
{
    amount = principal*pow(1+rate, year); 
    
    // output data
    printf("%0.2f $%8.2fn", rate, amount);  
    
}

我应该显示外循环的利率从5%到10%。由于某种原因,它不会因此显示从 0.05 到 0.10。当我将数字从 0.05 更改为 5 和 0.10 更改为 10 时。它对我有用。

这给了我一个提示,我不能使用小数位进行循环。我该如何解决这个问题?我必须显示为小数位。

您正在将rate递增1(通过rate++),但实际上您想将其递增0.01 。 试试这个:

for(rate = 0.05f; rate <= 0.1f; rate += 0.01f)
{
  ...
}

你认为++会对浮点数做什么?加上 0.1、0.01 或 0.001?无论类型如何,它都会将一 (1) 添加到数字中,例如 int、float、double 等。

首先,正如其他人所说,你每个循环将变量增加 1.0。如果您在循环后调试或打印rate,您将立即看到

但是,即使您将循环更改为for(rate=0.05; rate <=0.1; rate += 0.01)它仍然无法正常工作,因为 10 的负幂都无法在二进制浮点数中表示

您必须通过在小数点后第二位计数来循环整数,然后在计算时除以 100

for (rate = 5; rate <= 10; rate++)
{
    amount = principal * pow(1 + rate/100.0, year); 
    printf("%0.2f $%8.2fn", rate/100.0, amount);
}