C语言计算内部回报率(IRR)

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;
}

在这里插入图片描述

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值