สอบถามวิธีการคำนวณหา Rate ค่ะ

ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี ปัญหา การทำงานกับ บ. อื่น หรือบุคคลอื่น หรือ ภาษีต่างๆ กรมสรรพากร

Moderator: mindphp

ภาพประจำตัวสมาชิก
pprn
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 565
ลงทะเบียนเมื่อ: 02/07/2018 10:45 am

สอบถามวิธีการคำนวณหา Rate ค่ะ

โพสต์ที่ยังไม่ได้อ่าน โดย pprn »

สอบถามวิธีการคำนวณหา Rate

จากสูตรใน Excel
  • RATE(nper, pmt, pv, [fv], [type], [guess])
ตัวแปรมีดังนี้
  • ตัวแปรสูตร Rate
    ตัวแปรสูตร Rate
    rate.png (247.89 KiB) Viewed 2073 times
โจทย์
  • โจทย์ Rate
    โจทย์ Rate
ขอวิธีการคำนวณและสูตรค่ะ และขอวิธีคำนวณและสูตรถ้าในกรณีที่ใส่ค่า PMT กับ Guess ด้วยค่ะ
แก้ไขล่าสุดโดย pprn เมื่อ 24/08/2018 9:46 am, แก้ไขไปแล้ว 1 ครั้ง.
ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 28508
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

Re: สอบถามวิธีการคำนวณหา Rate ค่ะ

โพสต์ที่ยังไม่ได้อ่าน โดย thatsawan »

ลองเอาไปทดลองดู

โค้ด: เลือกทั้งหมด

define('FINANCIAL_MAX_ITERATIONS', 128);
define('FINANCIAL_PRECISION', 1.0e-08);


function RATE($nper, $pmt, $pv, $fv = 0.0, $type = 0, $guess = 0.1) {

    $rate = $guess;
    if (abs($rate) < FINANCIAL_PRECISION) {
        $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
    $i  = $x0 = 0.0;
    $x1 = $rate;
    while ((abs($y0 - $y1) > FINANCIAL_PRECISION) && ($i < FINANCIAL_MAX_ITERATIONS)) {
        $rate = ($y1 * $x0 - $y0 * $x1) / ($y1 - $y0);
        $x0 = $x1;
        $x1 = $rate;

        if (abs($rate) < FINANCIAL_PRECISION) {
            $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;
}


โค้ด: เลือกทั้งหมด

function rate($nprest, $vlrparc, $vp, $guess = 0.25) {
    $maxit = 100;
    $precision = 14;
    $guess = round($guess,$precision);
    for ($i=0 ; $i<$maxit ; $i++) {
        $divdnd = $vlrparc - ( $vlrparc * (pow(1 + $guess , -$nprest)) ) - ($vp * $guess);
        $divisor = $nprest * $vlrparc * pow(1 + $guess , (-$nprest - 1)) - $vp;
        $newguess = $guess - ( $divdnd / $divisor );
        $newguess = round($newguess, $precision);
        if ($newguess == $guess) {
            return $newguess;
        } else {
            $guess = $newguess;
        }
    }
    return null;
}
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 34