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