年金计算器

同一组参数下,把现值、终值、每期收付、期数和期间利率一次算全;并且明确区分期末支付的普通年金与期初支付的期初年金——两者的系数只差一个 (1+i)。

期间利率 i0.4167%
期数 n240 期
每期收付 PMT$1,649.89
现值 PV$250,000.00
终值 FV$678,160.34
期末系数 a(n,i)151.525313
期初系数 a(n,i)×(1+i)152.156669
年金类型期末支付

逐期明细(示例:25 万美元按期初余额递减,每月支取 1,649.89 美元,5% 年利率,共 240 期)

每行满足:期初余额 − 本期收付 + 本期利息 = 期末余额(期末支付口径)。

期数期初余额本期收付本期利息期末余额
1250,000.001,649.891,041.67249,391.78
2249,391.781,649.891,039.13248,781.02
3248,781.021,649.891,036.59248,167.72
4248,167.721,649.891,034.03247,551.86
5247,551.861,649.891,031.47246,933.43
6246,933.431,649.891,028.89246,312.43
7246,312.431,649.891,026.30245,688.85
8245,688.851,649.891,023.70245,062.66
9245,062.661,649.891,021.09244,433.86
10244,433.861,649.891,018.47243,802.45
11243,802.451,649.891,015.84243,168.40
12243,168.401,649.891,013.20242,531.71

提示:任一输入框里按 Enter 直接重算;「切换期初 / 期末」只翻转支付时点,其他参数不动,方便直接看那一个 (1+i) 造成多少差别;「加载更多」每次追加 12 期,「导出 CSV」带 BOM,「复制对照表」复制 TSV。

使用方法

  1. 先在「求解目标」里选你要什么。六个选项分成两类:一类只用一个已知量(现值或终值)配利率与期数,直接解出每期收付;另一类反过来,用每期收付解出现值、终值、期数或利率。
  2. 决定「年金类型」。选普通年金(期末支付)时,第一期款发生在第 1 期期末;选期初年金时,第一期款发生在第 0 期(也就是当下)。这个选择会让每期金额整体相差一个 (1+i)。
  3. 示例参数:求解目标选「已知现值 → 求每期收付」,类型选「普通年金」,现值填 250,000,年利率填 5,每年支付次数填 12,年数填 20。这组数字就是页面打开时的默认值。
  4. 点「计算」,或在任一输入框里按 Enter。结果卡给出八个量:期间利率、期数、每期收付、现值、终值、期末系数、期初系数、当前类型。系数那一对是本页的重点,两者只差一个 (1+i)。
  5. 看下面的逐期明细,检查每期利息怎么从 1,041.67 美元一路降到 6.84 美元,期末余额怎么从 250,000 递减回零附近。「加载更多」每次补 12 期,全表 240 期可用「导出 CSV」一次带走。
  6. 要对照期初与期末的差别,直接点「切换期初 / 期末」——参数不用重填,每期金额会从 1,649.89 变成 1,643.04 美元。

这个年金计算器能解决什么问题

一是把「一笔钱能领多久、每期能领多少」算清楚。25 万美元按 5% 年利率分 20 年按月支取,每期 1,649.89 美元是可直接执行的数字;把年数改成 30 年,每期掉到 1,342.05 美元,累计支付却从 395,974 涨到 483,139 美元——多领的那部分是「钱在账户里继续生息」换来的,不是凭空多出来的。

二是把「期初还是期末」这个坑摆在明面上。同样一笔 25 万美元、同样 5% 和 20 年,期末支付每期 1,649.89 美元、期初支付每期 1,643.04 美元,前者是后者的 1.00416667 倍,正好等于 1 + 0.05/12。

三是反解那些「不给你答案」的参数。想知道 25 万美元每月还 2,000 美元要还到什么时候,用「求期数」得到 176.94 期(约 14.74 年);想知道「每月还 1,500、还 240 期」隐含的是什么利率,用「求期间利率」得到 0.3238%/期,年化 3.8862%。这两个反解没有闭式直觉,但工具一次就给。

四是给贷款和储蓄做同一套语言。房贷等额本息月供就是「已知现值求每期支付」的普通年金;每月定投攒目标是「已知终值求每期缴存」的普通年金;租房按月预付则是期初年金。

这个年金计算器不做这些事:不处理不规则现金流(每期金额必须相同)、不做递增年金(每期按固定增长率变化的年金)、不加死亡率与退保率(那是寿险精算的范畴)、也不计算提前还款违约金或税费。要算按月等额本息的房贷,请用页面底部的「房贷计算器」;要单看一笔钱的一次性折现,请用「现值价值主张计算器」。

计算原理:两个系数、一个 (1+i)、三类反解

本页这个年金计算器的推导只用到两个系数。设期间利率 i = 年利率 ÷ m、总期数 n = 年数 × m,则普通年金的现值系数与终值系数分别是 a(n,i) = (1 − (1+i)^(−n)) ÷ i 和 s(n,i) = ((1+i)^n − 1) ÷ i。四条正向关系一次写完:PV = PMT × a(n,i)、FV = PMT × s(n,i)、PMT = PV ÷ a(n,i)、PMT = FV ÷ s(n,i)。示例里 a(240, 0.4167%) = 151.525313,250,000 ÷ 151.525313 = 1,649.89 美元;s(240, 0.4167%) = 411.033669,1,649.89 × 411.033669 = 678,160.34 美元,这就是结果卡里那个「终值 FV」的来处——它是把这 240 笔款额搬到最后一期时点的等价额,不是你能同时拿到的两笔钱。

期初年金(annuity due)只改一处:整体系数乘 (1+i)。期初支付意味着第一期发生在第 0 期,比期末支付早整整一期,所以每一笔款额都多赚一期利息,系数从 a 变成 a × (1+i)。示例中 151.525313 × 1.00416667 = 152.156669,250,000 ÷ 152.156669 = 1,643.04 美元。注意方向:固定现值求每期金额时,期初的每期金额更小(分母变大);固定每期金额求现值时,期初的现值更大。两个方向用的是同一个 (1+i),不要一个乘一个除。终值那一侧同理,s 也要乘 (1+i)。

期间利率为什么是「年利率 ÷ m」而不是「(1+年利率)^(1/m) − 1」。因为这页按名义年利率解释你填的那个数——也就是银行说的「年利率 5%,按月复利」,与房贷月供、信用卡分期用的是同一套口径。它对应的实际年利率是 (1 + 0.05/12)^12 − 1 = 5.1162%,比 5% 高 0.1162 个百分点。如果你的合同给的是实际年利率 5%,要先把 i 换成 (1+0.05)^(1/12) − 1 = 0.4074% 再填「年利率 4.8889%」,否则结果会偏高。

三个反解各走不同的路。求期数用对数直接解:由 PMT × a(n,i) = PV 反推得到 n = −ln(1 − PV×i÷PMT) ÷ ln(1+i),示例 PV=250,000、PMT=2,000、i=0.4167% 时 n = 176.94 期。求利率没有闭式解,因为 i 同时出现在分母和指数上,工具用二分法在 [−0.99, 1] 区间内迭代 200 次逼近——这是个单调函数,区间两端符号一正一负就能保证收敛,示例收敛到 0.3238%/期。

零利率是一个必须单独处理的分支。当 i = 0 时 a(n,i) 的表达式是 0/0,直接算会得到 NaN。正确做法是取极限:a(n,0) = n、s(n,0) = n,于是 PV = PMT × n。代码里显式判断 i === 0 并返回这个退化值,所以填 0% 不会算崩,而是给出「240 × 2,500 = 600,000 美元」这个干净结果。

完整示例(数值仅作演示)

示例条件与页面打开时的默认值完全一致:求解目标 = 已知现值求每期收付、年金类型 = 普通年金(期末)、PV = 250,000 美元、年利率 = 5%、m = 12、年数 = 20。

再换三组参数看走向:现值 250,000、5%、12 期/年固定不动,年数取 5 年时每期 4,717.81 美元、10 年 2,651.64 美元、30 年 1,342.05 美元;年数固定 20 年,利率从 3% 升到 8%,每期从 1,386.49 涨到 2,091.10 美元。如果反过来用「已知终值求每期缴存」——目标终值 500,000 美元、年利率 7%、m = 12、20 年——解出每期缴存约 1,216.45 美元。

输入范围与对照表

同样是现值 250,000 美元、年利率 5%、20 年,m 取不同的值,每期金额与期初/期末的差额都跟着变:

每年支付次数 m期间利率总期数期末每期期初每期两者差额
1(按年)5.0000%20$20,060.65$19,105.38$955.27
2(按半年)2.5000%40$9,959.06$9,716.15$242.90
4(按季)1.2500%80$4,961.63$4,900.38$61.25
12(按月,默认)0.4167%240$1,649.89$1,643.04$6.85
26(双周)0.1923%520$760.99$759.53$1.46
52(按周)0.0962%1,040$380.39$380.02$0.37

接着看期限。固定现值 250,000 美元、年利率 5%、m = 12,只拉长期限:

年数期数期末每期期初每期累计收付利息占比
560$4,717.81$4,698.23$283,06911.7%
10120$2,651.64$2,640.64$318,19721.4%
15180$1,976.98$1,968.78$355,85729.7%
20(默认)240$1,649.89$1,643.04$395,97436.9%
25300$1,461.48$1,455.41$438,44343.0%
30360$1,342.05$1,336.49$483,13948.3%

最后看利率。固定现值 250,000 美元、m = 12、20 年,只动年利率——利率越高,每期金额的抬升越小,这就是年金对利率的凹性:

年利率期间利率期末每期期初每期累计收付
3%0.2500%$1,386.49$1,383.04$332,759
4%0.3333%$1,514.95$1,509.92$363,588
5%(默认)0.4167%$1,649.89$1,643.04$395,974
6%0.5000%$1,791.08$1,782.17$429,859
7%0.5833%$1,938.25$1,927.01$465,179
8%0.6667%$2,091.10$2,077.25$501,864

结果边界、舍入与无解判定

常见问题

期初年金和期末年金到底差多少?

差一个 (1+i)。以默认示例为例,期末每期 1,649.89 美元、期初每期 1,643.04 美元,比值 1.00416667 就是 1 + 5%/12。放到 240 期上看,每期差 6.85 美元、20 年累计差约 1,643 美元。不是差一整期。

我按「年利率 ÷ 12」算,别人按「(1+年利率)^(1/12)−1」算,谁对?

取决于你和对方说的「年利率」是名义还是实际。本页填的是名义年利率(APR 口径),所以 i = 5%/12 = 0.4167%,对应的实际年利率是 5.1162%。如果对方拿的是实际年利率 5%,他的期间利率是 0.4074%,每期金额会比本页低约 0.9%。要互相对上,先把实际年利率换算成名义值再填。

为什么结果里既有现值又有终值?我到底能拿多少?

两个都是「等价额」,不是两笔钱。现值 250,000 美元是把 240 笔 1,649.89 美元按 0.4167% 逐期折现回今天得到的总值;终值 678,160.34 美元是把这 240 笔款额按同一利率累积到第 240 期末得到的总值。现实里你只会处在其中一个时点:今天拿 25 万,或者按期领 240 次。

房贷月供能不能直接用这个工具算?

可以,选「已知现值 → 求每期收付」+「普通年金(期末支付)」:现值填贷款本金,年利率填合同利率,m 填 12,年数填贷款年限,得出的就是等额本息月供。注意不能选修期初支付,因为房贷是还款期末结算的普通年金;选错会得到一个月供偏低的数。

「已知终值求每期缴存」适合什么场景?

适合目标倒推,比如「20 年后想攒到 50 万美元,年化 7%,每月要存多少」。这组参数解出每期约 1,216.44 美元;把年数拉到 30 年,每期会掉到约 426 美元左右。

期数是小数时,明细表为什么要截断?

因为「176.94 期」这样的期数在现实中不存在——你不可能支付 0.94 次。所以明细表只列整数部分,末行余额不为零,剩下的零头需要单独处理:要么最后一期多付一点,要么把期数向上取整并相应调低每期金额。求期数给出的小数更适合当参考值,而不是执行值。

永久年金(永续年金)怎么算?

把期数推向无穷大即可:PV = PMT ÷ i。每期 1,000 美元、期间利率 0.4167% 时现值正好是 1,000 ÷ 0.0041667 = 240,000 美元;改成期初支付则为 241,000 美元。

利率填负数会怎样?

允许,下限是 −20%。负利率会让系数变大——同样 25 万美元按期支取,每期金额反而变小(钱在缩水,必须少领才能撑到期)。若利率接近 −99%/期,现值系数会发散,收益卡上的数字会变得很大但没有现实对应,所以本页把下限压在 −20% 而不是更激进的 −99%。

相关工具