在此php代码中调用函数

在此php代码中调用函数,php,function,Php,Function,下面是代码,我正在尝试调用“RATE”函数 RATE(120,-271.09,20000)是它在excel中的使用方式,对于这段代码,我认为它的工作原理应该是一样的 我做错了什么?我怎样才能让它工作 我的代码在这里:在您的URL上发布的代码为您的应用程序定义了一个类结构。因此,在调用该类中的任何函数之前,需要创建该类的实例。例如,以下内容应该可以帮助您开始: $financial = new Financial; $rate = $financial->RATE(120,-271.09,

下面是代码,我正在尝试调用“RATE”函数

RATE(120,-271.09,20000)是它在excel中的使用方式,对于这段代码,我认为它的工作原理应该是一样的

我做错了什么?我怎样才能让它工作


我的代码在这里:

在您的URL上发布的代码为您的应用程序定义了一个类结构。因此,在调用该类中的任何函数之前,需要创建该类的实例。例如,以下内容应该可以帮助您开始:

$financial = new Financial;

$rate = $financial->RATE(120,-271.09,20000);

print_r($rate);

您如何在应用程序中使用它还不清楚,但是使用上述原则,您应该开始看到一些输出。

您必须创建此类的实例,然后运行RATE方法

<?php
    require("class.Financial.php"); 
    $fin     = new Financial(); 
    $result  = $fin->RATE(120, -271.09, 20000);
    echo $result;
?>

@Scott M

以下是函数:

/**
 * RATE
 * 
 **/
function RATE($nper, $pmt, $pv, $fv = 0.0, $type = 0, $guess = 0.1)
{
    $rate = $guess;
    $i  = 0;
    $x0 = 0;
    $x1 = $rate;

    if (abs($rate) < FINANCIAL_ACCURACY) {
        $y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv;
    } else {
        $f = exp($nper * log(1 + $rate));
        $y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;
    }
    $y0 = $pv + $pmt * $nper + $fv;
    $y1 = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;

    // find root by secant method
    while ((abs($y0 - $y1) > FINANCIAL_ACCURACY) && ($i < FINANCIAL_MAX_ITERATIONS))
    {
        $rate = ($y1 * $x0 - $y0 * $x1) / ($y1 - $y0);
        $x0 = $x1;
        $x1 = $rate;

        if (abs($rate) < FINANCIAL_ACCURACY) {
            $y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv;
        } else {
            $f = exp($nper * log(1 + $rate));
            $y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;
        }

        $y0 = $y1;
        $y1 = $y;
        $i++;
    }
    return $rate;
}
/**
*比率
* 
**/
功能比率($nper、$pmt、$pv、$fv=0.0、$type=0、$guess=0.1)
{
$rate=$guess;
$i=0;
$x0=0;
$x1=$rate;
if(资产支持率($rate)<财务准确性){
$y=$pv*(1+$nper*$rate)+$pmt*(1+$rate*$type)*$nper+$fv;
}否则{
$f=exp($nper*log(1+$rate));
$y=$pv*$f+$pmt*(1/$rate+$type)*($f-1)+$fv;
}
$y0=$pv+$pmt*$nper+$fv;
$y1=$pv*$f+$pmt*(1/$rate+$type)*($f-1)+$fv;
//用割线法求根
而((abs($y0-$y1)>财务准确性)和($i<财务最大迭代次数))
{
美元汇率=($y1*$x0-$y0*$x1)/($y1-$y0);
$x0=$x1;
$x1=$rate;
if(资产支持率($rate)<财务准确性){
$y=$pv*(1+$nper*$rate)+$pmt*(1+$rate*$type)*$nper+$fv;
}否则{
$f=exp($nper*log(1+$rate));
$y=$pv*$f+$pmt*(1/$rate+$type)*($f-1)+$fv;
}
$y0=$y1;
$y1=$y;
$i++;
}
回报率:$;
}

您需要提取关键部分并将其放入您的问题中。翻阅一个巨大的文件浪费时间。谢谢,这几乎奏效了。我认为这个函数一定是出了问题,因为它输出了小数点后2位的值,对于任何超过250左右的数字,结果都是“NAN”。e、 g.将-27放入其中应输出-2.420974,但它输出-0.02420974