2024每日刷题(119)
在 Excel 中有一个函数 irr 用于计算一个投资项目的内部回报率(internal return rate)。 在项目产生利润之前需要先投入建设资金(假设称为 c0),建成后每年产生的利润(假设称为 c1,c2…)。内部回报率(记为 r,范围为 −100%∽+100%)是到项目末期的现金流为 0 的贴现率。
实现代码
#include <stdlib.h>
#include <stdio.h>
int main()
{
int n,i,m,j,j2;
double A,B,r,X,Y,C,x1;
long long huge=1000000000;
int a[102];
scanf("%d",&n);//n turn to T
for(i=1;i<=n;i++)
{
A=-1.0;B=1.0;//设定r的范围
scanf("%d",&m);
m=m+1;
printf("case #%d:\n",i-1);
for(j=1;j<=m;j++)
{
scanf("%d",&a[j]);
}
while((B-A)*huge>1.0)
{
r=(A+B)/2.0;
x1=A+1;
X=-1*a[1];
for(j2=2;j2<=m;j2++)
{
X*=x1;
X+=a[j2];
}
x1=B+1;
Y=-1*a[1];
for(j2=2;j2<=m;j2++)
{
Y*=x1;
Y+=a[j2];
}
x1=r+1;
C=-1*a[1];
for(j2=2;j2<=m;j2++)
{
C*=x1;
C+=a[j2];
}
if(X*C>0) A=r;
else B=r;
}
if((r-0)*huge<1&&(r-0)*huge>-1)
printf("0.0000%%\n");
else
printf("%.4lf%%\n",r*100);
}
return 0;
}
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!