excel CUMIPMT。功能在javascript [英] excel CUMIPMT. function in javascript

查看:82
本文介绍了excel CUMIPMT。功能在javascript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有人知道如何在javascript中实现excel CUMIPMT函数。我发现这个代码,但似乎缺少一些功能。

解决方案

这是伪代码,你需要调整它:

 对象CUMIPMT(double rate,double nper,double pv,double start_period,double end_period,double type)
{

if(rate< = 0)
{
返回#NUM!;
}

如果(nper <= 0)
{
返回#NUM!;
}
nper =(int)nper;

if(pv <= 0)
{
return#NUM!;
}

if(start_period< 1)
{
return#NUM!;
}
start_period =(int)start_period;

if(end_period< 1)
{
return#NUM!;
}
end_period =(int)end_period;

if(start_period> end_period)
{
返回#NUM!;
}

if(!(type == 0 || type == 1))
{
return#NUM!;
}

double value = 0;
(int per =(int)start_period; per< =(int)end_period; per ++)
{
value + = IPMT(rate,nper,per,pv,0,type );
}

返回值;
}

double IPMT(double rate,double nper,double period,double pv,double fv,double type)
{
if(rate == 0)
{
return 0;
}
if(type == 1&& period == 1)
{
return 0;
}
double pmt = PMT(rate,nper,pv,fv,0);
if(type == 0)
{
return(pv * Math.Pow(1.0 + rate,period - 1)+ pmt *((Math.Pow(1 + rate,period - 1) - 1)/率))*率*(-1.0);
}
else
{
double pmt2 = PMT(rate,nper,pv,fv,1);
return pmt2 - pmt +(pv * Math.Pow(1.0 + rate,period-2)+ pmt *((Math.Pow(1 + rate,period-2)-1)/ rate)* rate *(-1.0);
}

}

double PMT(double rate,double nper,double pv,double fv,double type)
{
if (rate == 0)
{
return(-1.0)*(fv + pv)/ nper;
}
else
{
return(-1.0)*
((fv + pv * Math.Pow((1 + rate),nper))*
rate /
((1 + rate * type)*(Math.Pow((1 + rate),nper) - 1))
);
}
}


Does anyone know how to implement the excel CUMIPMT function in javascript. I found this code but it seems to be missing some functions.

解决方案

This is pseudocode, you will need to adjust it:

Object CUMIPMT(double rate, double nper, double pv, double start_period, double end_period, double type)
        {

            if (rate <= 0)
            {
                return "#NUM!";
            }

            if (nper <= 0)
            {
                return "#NUM!";
            }
            nper = (int)nper;

            if (pv <= 0)
            {
                return "#NUM!";
            }

            if (start_period < 1)
            {
                return "#NUM!";
            }
            start_period = (int)start_period;

            if (end_period < 1)
            {
                return "#NUM!";
            }
            end_period = (int)end_period;

            if (start_period > end_period)
            {
                return "#NUM!";
            }

            if (!(type == 0 || type == 1))
            {
                return "#NUM!";
            }

            double value = 0;
            for (int per = (int)start_period; per <= (int)end_period; per++)
            {
                value += IPMT(rate, nper, per, pv, 0, type);
            }

            return value;
        }

        double IPMT(double rate, double nper, double period, double pv, double fv, double type)
        {
            if (rate == 0)
            {
                return 0;
            }
            if (type == 1 && period == 1)
            {
                return 0;
            }
            double pmt = PMT(rate, nper, pv, fv, 0);
            if (type == 0)
            {
                return (pv * Math.Pow(1.0 + rate, period - 1) + pmt * ((Math.Pow(1 + rate, period - 1) - 1) / rate)) * rate * (-1.0);
            }
            else
            {
                double pmt2 = PMT(rate, nper, pv, fv, 1);
                return pmt2 - pmt + (pv * Math.Pow(1.0 + rate, period - 2) + pmt * ((Math.Pow(1 + rate, period - 2) - 1) / rate)) * rate * (-1.0);
            }

        }

        double PMT(double rate, double nper, double pv, double fv, double type)
        {
            if (rate == 0)
            {
                return (-1.0) * (fv + pv) / nper;
            }
            else
            {
                return (-1.0) *
                        ((fv + pv * Math.Pow((1 + rate), nper)) *
                        rate /
                        ((1 + rate * type) * (Math.Pow((1 + rate), nper) - 1))
                    );
            }
        }

这篇关于excel CUMIPMT。功能在javascript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆