rq / apr-calculator
欧盟年度百分比费率(APR或APRC)计算器
Requires
- php: >=7.0
Requires (Dev)
- phpspec/phpspec: ^7.4
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-08-31 00:26:32 UTC
README
这个库是一个平均百分比费率(APR或APRC)计算器,符合欧洲委员会指令2014/17/EU(“抵押贷款信用指令”,MCD”)和欧洲委员会指令2008/48/EC(“消费者信用指令”,CCD”)的要求。
APR基本上是您在平均一年的债务期限内借入的代价,它考虑了您需要支付的费用,包括利息以及任何额外的费用(如安排费或年度费)。它还考虑了您借入时利息计费频率,这也会影响您需要支付的金额。
代码和逻辑最初是从一个类似的C#库移植过来的,该库声称符合英国金融服务管理局(FCA)的规定,尤其是FCAMBOC 10.3 表格计算APR。我相信遵守此规定,以及MCOB 10A.2 表格计算APRC也是安全的。
有关原始库的更多信息以及一些使用示例,可以在其作者的存档博客条目中找到。
如何使用
使用composer安装库
$ composer require rq/apr-calculator
当然,如果您不希望使用Composer或由于某些原因无法使用Composer,您也可以下载此存储库的存档。
然后,在您的代码中,通过将首期预付款金额传递给其构造函数来创建Calculator类的实例
use RQ\APRCalculator\Calculator; ... $calculator = new Calculator(200000);
完成这些后,您必须添加所有要包含在计算中的分期付款(付款和预付款)。这些分期付款的确切内容将完全取决于您的使用情况(贷款类型、期限和其他条款)。
可以通过以下方法之一添加单个分期付款
// $calculator->addAdvance(float $amount, float $daysAfterFirstAdvance): self // $calculator->addPayment(float $amount, float $daysAfterFirstAdvance): self // $calculator->addInstalment(float $amount, float $daysAfterFirstAdvance, int $type = Calculator::TYPE_PAYMENT): self $calculator->addAdvance(4000, 30); $calculator->addPayment(4000, 30); $calculator->addInstalment(4000, 30);
可以像这样添加一系列相同的定期分期付款
// $calculator->addRegularAdvances(float $amount, float $numberOfAdvances, float $daysBetweenAdvances, float $daysAfterFirstAdvance = 0): self // $calculator->addRegularPayments(float $amount, float $numberOfPayments, float $daysBetweenPayments, float $daysAfterFirstAdvance = 0): self // $calculator->aaddRegularInstalments(float $amount, float $numberOfInstalments, float $daysBetweenInstalments, float $daysAfterFirstAdvance = 0, int $type = Calculator::TYPE_PAYMENT): self $calculator->addRegularAdvances(600, 12, Calculator::FREQUENCY_MONTHLY); $calculator->addRegularPayments(600, 12, Calculator::FREQUENCY_MONTHLY); $calculator->addRegularInstalments(600, 12, Calculator::FREQUENCY_MONTHLY);
添加所有分期付款后,只需调用calculate()
方法即可将APR作为浮点数返回
// $calculator->calculate(float $guess = 0, int $round = self::DEFAULT_PRECISION): float $apr = $calculator->calculate()
为了方便起见,还有一个静态的create()
方法可用,所有add*()
方法都是可链的,因此,如果您愿意,您也可以在不将计算器分配给变量的情况下计算APR,如下所示
$apr = Calculator::create(200000) ->addPayment(4000, 0) ->addRegularPayments(1432.86, 240, Calculator::FREQUENCY_MONTHLY) ->calculate();
如果您的场景中只有一个(初始)预付款和一个付款,您还可以通过在实例化类后立即调用calculateForSinglePayment()
方法来进一步节省一个调用,如下所示
// $calculator->calculateForSinglePayment(float $payment, int $daysAfterAdvance, int $round = self::DEFAULT_PRECISION): float $apr = Calculator::create(100) ->calculateForSinglePayment(120, 14);
欧洲中央银行(EC)于2015年发布的包含年利率(APR)计算示例的文档,可在doc/
文件夹中找到,链接为此处。其中的所有示例都已重写为在spec/
下的PhpSpec测试。它们不仅有助于测试代码,还可以作为如何使用库的示例。此外,为原始C#库编写的许多测试也已经移植,并可在其中找到。
* 警告:至少根据欧洲中央银行的指示,在某些情况下,计算出的年利率将取决于声称的日期(某些情况下涉及闰年)。目前计算器没有考虑这一点,并假设一年有365.25天。这意味着计算结果实际上可能不正确的机会很小。