使用方法
- 先在「求解目标」里选你要什么。六个选项分成两类:一类只用一个已知量(现值或终值)配利率与期数,直接解出每期收付;另一类反过来,用每期收付解出现值、终值、期数或利率。
- 决定「年金类型」。选普通年金(期末支付)时,第一期款发生在第 1 期期末;选期初年金时,第一期款发生在第 0 期(也就是当下)。这个选择会让每期金额整体相差一个 (1+i)。
- 示例参数:求解目标选「已知现值 → 求每期收付」,类型选「普通年金」,现值填 250,000,年利率填 5,每年支付次数填 12,年数填 20。这组数字就是页面打开时的默认值。
- 点「计算」,或在任一输入框里按 Enter。结果卡给出八个量:期间利率、期数、每期收付、现值、终值、期末系数、期初系数、当前类型。系数那一对是本页的重点,两者只差一个 (1+i)。
- 看下面的逐期明细,检查每期利息怎么从 1,041.67 美元一路降到 6.84 美元,期末余额怎么从 250,000 递减回零附近。「加载更多」每次补 12 期,全表 240 期可用「导出 CSV」一次带走。
- 要对照期初与期末的差别,直接点「切换期初 / 期末」——参数不用重填,每期金额会从 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。
- 期间利率 i = 0.4167%(= 5% ÷ 12),总期数 n = 240;
- 期末系数
a(240, 0.4167%) = 151.525313,每期收付 1,649.89 美元; - 把同一个 PV 换成期初支付,系数变成 152.156669,每期收付 1,643.04 美元,两者比值 1.00416667;
- 第 1 期:期初余额 250,000.00,利息 1,041.67(= 250,000 × 0.4167%),本金 608.22,期末余额 249,391.78;
- 第 12 期:利息降到 1,013.20,期末余额 242,531.71;第 120 期期末余额约 155,554;
- 第 240 期(末期):利息只剩 6.84,期末余额 −0.27——这个几分钱的负数就是「每期金额四舍五入到分」留下的残差,见下一节;
- 240 期累计收付 395,974 美元,其中利息约 145,974 美元,占 36.9%;改成期初支付则累计 394,330 美元;
- 若把这 240 笔款额当成缴存而非支取,它们在末期时点的终值是 678,160.34 美元。
再换三组参数看走向:现值 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,只拉长期限:
| 年数 | 期数 | 期末每期 | 期初每期 | 累计收付 | 利息占比 |
|---|---|---|---|---|---|
| 5 | 60 | $4,717.81 | $4,698.23 | $283,069 | 11.7% |
| 10 | 120 | $2,651.64 | $2,640.64 | $318,197 | 21.4% |
| 15 | 180 | $1,976.98 | $1,968.78 | $355,857 | 29.7% |
| 20(默认) | 240 | $1,649.89 | $1,643.04 | $395,974 | 36.9% |
| 25 | 300 | $1,461.48 | $1,455.41 | $438,443 | 43.0% |
| 30 | 360 | $1,342.05 | $1,336.49 | $483,139 | 48.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,649.8937 美元,页面上按 1,649.89 使用,240 期下来末期余额会停在 −0.27 美元。如果保留全部小数位,末期余额是 −1.5×10⁻⁹ 美元。看到末期不是正好 0 属于正常现象,把残差加回本金即可对平。
- 求期数时可能得不到整数。PV=250,000、每期 2,000、i=0.4167% 的解是 176.94 期。明细表只能列整数行,所以表里是 176 行,第 176 期末余额还剩 1,866.92 美元——正好是不足一期的零头(小数部分 0.94)。若每期金额小于
PV × i = 1,041.67美元,利息永远追不上,工具会直接报错。 - 求利率时区间是 [−0.99, 1]。i 的下限锁在 −99%/期而不是 −100%,因为 i = −1 时
(1+i)^(−n)会发散成 Infinity;上限 100%/期足以覆盖高息场景。若在区间两端函数值同号,说明这组「现值 + 每期收付 + 期数」互相矛盾,工具会判定无解而不是给一个假数。 - i = 0 走单独分支。此时
a(n,0) = s(n,0) = n,每期金额就是「现值 ÷ 期数」,没有任何利息成分;填 0% 不会出现 NaN 或空白结果。 - 年数上限 100 年、支付次数上限 52 次/年,因此期数最多 5,200 期(本页内部还会拦掉超过 12,000 期的极端组合)。超过之后不是算不动,而是这类假设已经没有决策意义。
- 金额是 IEEE 754 双精度浮点数。安全整数上限是
2⁵³−1 = 9,007,199,254,740,991,本页把现值与终值都限制在 10 亿美元以内、期数限制在 12,000 期以内,最大中间量(终值 10 亿、i 上限 100%/期)仍可精确表示到整数位, - 年金计算器只算确定性现金流。没有违约、没有提前还款、没有税费与手续费,也不含寿命不确定性。真实寿险年金的定价还要叠加生命表(如《中国人身保险业经验生命表》),不在本页范围内。
常见问题
期初年金和期末年金到底差多少?
差一个 (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%。
相关工具
- 贷款计算器:按等额本息算月供与总利息,本质上就是本页「已知现值求每期收付 + 期末支付」的一个应用。
- 房贷计算器:把等额本息与等额本金放在一起对比,前者是普通年金,后者不是——正好用来看本页模型的适用边界。
- IRA计算器:按缴存上限逐年复利,解决「投多少」;本页解决「这些钱怎么在时间轴上等价」,两页配合能覆盖积累阶段的两端。
- 退休储蓄计算器:可以同时填初始余额与每期缴存,比本页多一个存量项。
- 现值价值主张计算器:只折现一笔一次性金额,是本页多期折现的极简版,用来验证单点结果。
- 储蓄利息计算器:不复利、只按本金计息,可用来对照「单利 vs 年金复利」的差额。
- 法则72计算器:用 72 ÷ 收益率粗算翻倍年数,快速判断不同利率档位的差距。
- 计算器:查看全部计算器工具。