Flutter金融数据更新插件finance_updated的使用
Flutter金融数据更新插件finance_updated的使用
本插件提供了用于金融计算的一系列高级函数和类,使得进行金融计算变得简单。该插件平台独立,支持iOS和Android。
使用
最简单的使用方式是通过顶级函数。它们允许你以最小的努力进行金融计算:
未来值计算
假设现在存入1000美元,并且每月再存入100美元。假设年利率为7%,按月复利。那么30年后将有多少金额?
print(Finance.fv(rate: 0.07 / 12, nper: 30 * 12, pmt: -100, pv: -1000));
因此,存入1000美元今天并每月存入100美元,年利率为7%,在30年后可获得130,113.59美元。
还款计算
假设现在借了100,000美元,年利率为2.5%,需要在10年内还清。那么每月需要还款多少?
print(Finance.pmt(rate: 0.025 / 12, nper: 10 * 12, pv: 100000));
因此,为了还清今天的100,000美元借款,每月需要还款942.69美元。
期数计算
如果每月只能还款500美元,那么需要多久才能还清100,000美元的贷款,年利率为3%?
print(Finance.nper(rate: 0.03 / 12, pmt: -500, pv: 100000));
因此,需要超过20个月才能还清贷款。
本金和利息支付计算
假设一年期贷款为5000美元,年利率为10%,按月复利。那么每期的还款计划是什么?总利息是多少?
final Iterable<Map<String, num>> payments =
List<int>.generate(12, (int index) => index + 1).map((int per) =>
<String, num>{
'per': per,
'pmt': Finance.pmt(rate: 0.1 / 12, nper: 1 * 12, pv: 5000),
'ppmt':
Finance.ppmt(rate: 0.1 / 12, per: per, nper: 1 * 12, pv: 5000),
'ipmt':
Finance.ipmt(rate: 0.1 / 12, per: per, nper: 1 * 12, pv: 5000),
});
payments.forEach(print);
final num interestPaid =
payments.fold(0, (num p, Map<String, num> c) => p + c['ipmt']);
print(interestPaid);
因此,总利息支付约为275美元。
现值计算
假设在10年内每月存入100美元,年利率为7%,按月复利。那么初始投资应为多少才能在10年后达到20,000美元?
print(Finance.pv(rate: 0.07 / 12, nper: 10 * 12, pmt: -100, fv: 20000));
因此,要使10年后每月存入100美元,年利率为7%,初始存款应为1339.28美元。
利率计算
假设8000美元的贷款期限为5年,每月还款额为152.50美元。那么利率是多少?
print(Finance.rate(nper: 60, pmt: -152.5, pv: 8000, fv: 0));
计算出的月利率为0.45%,年利率为5.42%。
净现值计算
假设一项投资需要现在投入15,000美元,然后在未来定期(固定间隔)取出1500美元、2500美元、3500美元、4500美元、6000美元。假设最终价值为0,折现率为5%。那么这项投资现在的净现值是多少?
print(Finance.npv(rate: 0.05, values: [-15000, 1500, 2500, 3500, 4500, 6000]));
因此,这项投资现在的净现值为122.894美元。
内部收益率计算
假设一项投资需要现在投入15,000美元,然后在未来定期(固定间隔)取出1500美元、2500美元、3500美元、4500美元、6000美元。假设最终价值为0。那么这项投资的内部收益率是多少?
print(Finance.irr(values: [-15000, 1500, 2500, 3500, 4500, 6000]));
因此,这项投资的内部收益率为5.24%。
完整示例Demo
以下是一个完整的示例代码,展示了如何使用finance_updated
插件进行各种金融计算。
import 'package:finance_updated/finance_updated.dart';
void main(List<String> arguments) {
var Finance = null;
Finance = Finance();
// 未来值计算
print(Finance.fv(rate: 0.07 / 12, nper: 30 * 12, pmt: -100, pv: -1000));
// 还款计算
print(Finance.pmt(rate: 0.025 / 12, nper: 10 * 12, pv: 100000));
// 期数计算
print(Finance.nper(rate: 0.03 / 12, pmt: -500, pv: 10000));
// 本金和利息支付计算
final Iterable<Map<String, num>> payments =
List<int>.generate(12, (int index) => index + 1).map((int per) =>
<String, num>{
'per': per,
'pmt': Finance.pmt(rate: 0.1 / 12, nper: 1 * 12, pv: 5000),
'ppmt':
Finance.ppmt(rate: 0.1 / 12, per: per, nper: 1 * 12, pv: 5000),
'ipmt':
Finance.ipmt(rate: 0.1 / 12, per: per, nper: 1 * 12, pv: 5000),
});
payments.forEach(print);
final num interestPaid =
payments.fold(0, (num p, Map<String, num> c) => p + c['ipmt']);
print(interestPaid);
// 现值计算
print(Finance.pv(rate: 0.07 / 12, nper: 10 * 12, pmt: -100, fv: 20000));
// 利率计算
print(Finance.rate(nper: 60, pmt: -152.5, pv: 8000, fv: 0));
// 内部收益率计算
print(Finance.irr(values: [-15000, 1500, 2500, 3500, 4500, 6000]));
// 净现值计算
print(Finance.npv(
rate: 0.05, values: [-15000, 1500, 2500, 3500, 4500, 6000]));
}
更多关于Flutter金融数据更新插件finance_updated的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html