代碼如下,我試圖調用「RATE」函數。在這個php代碼中調用函數
RATE(120,-271.09,20000)是如何在excel中使用的,我認爲這個代碼應該可以工作。
我在做什麼錯?我怎樣才能得到它的工作
我的代碼是在這裏:http://pastebin.com/AbKqc8g1
代碼如下,我試圖調用「RATE」函數。在這個php代碼中調用函數
RATE(120,-271.09,20000)是如何在excel中使用的,我認爲這個代碼應該可以工作。
我在做什麼錯?我怎樣才能得到它的工作
我的代碼是在這裏:http://pastebin.com/AbKqc8g1
您必須創建此類的實例,然後運行RATE方法。
<?php
require("class.Financial.php");
$fin = new Financial();
$result = $fin->RATE(120, -271.09, 20000);
echo $result;
?>
謝謝,這幾乎工作。 我認爲這個函數一定有什麼問題,因爲它輸出值爲2個小數位,這對任何超過250個數字的結果都是「NAN」。 例如在那裏輸出-27應該輸出-2.420974,而是輸出-0.02420974 – James 2010-08-16 08:08:08
張貼在您的網址的代碼定義一個類結構,無論你的應用程序。因此,在調用該類中的任何函數之前,您需要創建該類的一個實例。例如,下面應該幫助你開始:
$financial = new Financial;
$rate = $financial->RATE(120,-271.09,20000);
print_r($rate);
你很努力如何在應用程序中使用,這是目前還不清楚,但使用上述原則,你應該開始看到一些輸出。
@斯科特中號
這裏是功能:
/**
* 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;
}
你需要提取的關鍵部位,並把它們放在你的問題。通過一個巨大的文件看浪費時間。 – 2010-08-12 14:24:24