c语言内部收益率,内部收益率 (C语言代码)

这篇博客展示了如何使用C++编程计算现金流的内部收益率(IRR),代码中包含一个迭代算法,处理从-1到正无穷的利率范围,并确保结果精度。程序读取输入的现金流数据并进行计算,如果找不到唯一解或者解过多,则会给出相应提示。
摘要由CSDN通过智能技术生成

解题思路:

就老老实实照着上面写的公式算。试出来的。-1到正无穷。

注意事项:

double,最好不要用=号,用约等于就行。

参考代码:

#include

#include

int main()

{

double irr,npv,num,max,mix;

double temp[25];

int i,t,t0,j,k;

int cf[10];

for(i=0;i<25;i++)

{

scanf("%d",&t);

if(t==0)

{

temp[i]=-3;

break;

}

scanf("%d",&t0);

for(j=0;j

{

scanf("%d",&cf[j]);

}

irr=1e10;

max=irr;

mix=-1;

num=0;

k=0;

temp[i]=-2;

while(num<=1&&k<100&&temp[i]!=irr)

{

npv=0;

for(j=0;j

{

npv=npv+(1.0*cf[j])/pow(irr+1,j+1.);

}

npv=npv+t0;

if(fabs(npv)<1e-5)

{

num++;

temp[i]=irr;

irr=max*20;

mix=max;

max=irr;

k=0;

continue;

}

if(npv>0)

{

mix=irr;

if(irr==max)

{

irr=irr*2;

max=irr;

}

else

{

irr=(max+mix)/2;

}

}

else if(npv<0)

{

max=irr;

irr=(max+mix)/2;

}

k++;

}

if(k==100&&temp[i]==-2)

temp[i]=-2;

else if(num>1)

temp[i]=-4;

}

for(i=0;i<25;i++)

{

if(temp[i]==-3)

{

break;

}

if(temp[i]==-2)

{

printf("No");

}

else if(temp[i]==-4)

{

printf("Too many");

}

else

printf("%.2lf\n",temp[i]);

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值