计算工具 · 投资理财

复利计算器

起始本金/年化/复投/通胀调整

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 54 次使用
复利计算器
起始本金10 万
名义年化收益率8 %
%
投资年限10 年
复利频率计息周期
预期年通胀率2.5 %
%
最终金额按 2.5% 通胀折算后的真实购买力
输入参数即时测算 · 全程本地运算不上传
计算说明 / 复利原理

复利终值:FV = P × (1 + r)ⁿ,其中 r 为每期利率(名义年化 ÷ 复利频率),n 为总期数(年限 × 复利频率)。复利频率越高,等效年化越高。

连续复利:FV = P × e^(年化×年限),是复利频率趋于无穷的极限。

定期追加:FV = P × (1+r)ⁿ + PMT × ((1+r)ⁿ − 1) / r,期初追加再乘 (1+r)。

通胀调整:实际购买力 = 最终金额 ÷ (1 + 通胀率)^年限,反映未来这笔钱按今日物价的真实价值。

72 法则:本金翻倍所需年数 ≈ 72 ÷ 年化收益率(%),是连续复利下精确公式的便捷估算。

风险提示:历史收益不代表未来表现,本工具采用恒定年化假设,未计入波动、税费与申赎成本。结果仅供理财规划初步参考,不构成任何投资建议

第一节

关于本工具

About

一笔 10 万本金,年化 5%,复投 30 年——账面上滚到 43 万,但若每年通胀 3%,实际购买力只剩 17 万。这个计算器把通胀调整直接嵌入复利公式,输入本金、年化、复投频率和通胀率,同时输出名义终值与实际终值。纯浏览器运算,输入数据不上传服务器。

使用场景

年终奖定存方案

年底拿到5万元年终奖,银行定期年化1.5%,理财经理推荐一款年化3.2%的固收产品,但要求每月复投。用本工具输入本金5万、年化3.2%、复投频率选「每月」,对比单利模式,发现10年后复利终值比单利多出近1.2万元。这笔差额让犹豫不决的人当场决定接受复投条款。

养老金缺口测算

35岁的程序员想60岁退休时每月有5000元补充养老金,当前社保个人账户余额12万。用本工具把12万设为起始本金,假设未来25年平均年化4%,每月定投1000元(复投),得出60岁时账户约68万。按4%提取率,每月可领2270元,缺口还有2730元——这个数字逼他正视需要追加定投额或寻找更高收益渠道。

教育金通胀对冲

孩子刚出生,预估18年后国内大学四年总费用约30万(按3%通胀折算)。用本工具开启「通胀调整」开关,输入目标终值30万、通胀率3%,反推当前需一次性投入16.7万(假设年化5%复投)。如果分18年每月定投,则每月需存约680元。两个数字让年轻父母立刻知道该准备一笔整钱还是开启月供计划。

提前还贷权衡

手头有20万闲钱,房贷利率4.2%,剩余期限15年。犹豫是提前还贷省利息,还是买年化3.8%的理财。用本工具输入20万、年化3.8%、复投频率选「每年」,15年后终值约35万。而提前还贷节省的利息总额约12万(按等额本息算)。两个数字一比:理财终值35万 > 还贷省下的12万,结论是持有现金更划算,除非房贷利率高于理财收益。

基金定投压力测试

每月工资结余3000元,想定投沪深300指数基金,历史年化约8%,但担心市场波动。用本工具分别输入年化6%(保守)、8%(中性)、10%(乐观)三档,复投频率选「每月」,定投10年。结果显示:即使只有6%年化,终值也有49万;8%年化达55万。这个区间让他有底气坚持定投,不再因短期下跌恐慌赎回。

对比矩阵

维度本工具竞品 A(雪球复利计算器)传统方法(手工 Excel 表格)
隐私所有计算在浏览器内完成,数据不上传服务器需联网加载页面,部分数据可能经网络传输完全本地,但文件需自行管理
离线可用首次加载后断网仍可计算必须联网才能使用完全离线(需安装 Office)
通胀调整内置通胀率参数,自动扣除通胀后显示实际收益多数竞品无此参数,需手动换算需自行编写公式或额外计算
复投频率支持日/月/季/半年/年等多种复投周期选择通常仅支持年复投或固定周期可自定义但需手动设置公式
操作步骤打开即用,输入参数即时出结果需注册或点击多次才能开始计算需新建表格、输入公式、拖拽填充
第二节

使用指南

Getting Started

使用步骤

  1. 1在「起始本金」输入框填入初始投入金额,单位默认为元,支持小数点后两位
  2. 2在「年化收益率」输入框填写预期年回报率,如 8 表示 8%,范围 0.01–100
  3. 3在「复投频率」下拉菜单选择复利计算周期:每月、每季、每半年或每年
  4. 4开启「通胀调整」开关后,在弹出字段输入预期年通胀率,结果将扣除通胀影响
  5. 5点击「计算」按钮,下方表格展示每年末的本息合计与通胀调整后实际购买力

输入输出示例

输入输出说明
起始本金 100000 元 / 年化 5% / 复投 10 年 / 通胀调整 2%终值 162,889.46 元 / 实际购买力终值 133,648.62 元常规:中等金额 + 常见年化 + 中等年限,验证复利基本计算与通胀调整同时生效
起始本金 1 元 / 年化 100% / 复投 1 年 / 通胀调整 0%终值 2.00 元边界:极小本金 + 极端年化,验证年化 100% 时一年后恰好翻倍
起始本金 0 元 / 年化 10% / 复投 5 年 / 通胀调整 3%终值 0.00 元 / 实际购买力终值 0.00 元边界:本金为零时,无论年化多高终值始终为零,避免用户误以为复利能凭空生钱
起始本金 10000 元 / 年化 0% / 复投 20 年 / 通胀调整 0%终值 10,000.00 元边界:年化 0% 时复利无意义,终值等于本金,验证零利率分支
起始本金 500000 元 / 年化 12% / 复投 30 年 / 通胀调整 0%终值 14,979,648.87 元常规:大额本金 + 高年化 + 超长年限,展示复利指数增长效应(接近 30 倍)
起始本金 10000 元 / 年化 5% / 复投 0 年 / 通胀调整 3%终值 10,000.00 元 / 实际购买力终值 10,000.00 元易错:复投年限为 0 时,终值等于本金,通胀调整也不起作用;用户常误以为 0 年也会产生利息
起始本金 100000 元 / 年化 8% / 复投 10 年 / 通胀调整 8%终值 215,892.50 元 / 实际购买力终值 100,000.00 元易错:通胀率等于年化时,实际购买力终值等于初始本金,避免用户误以为复利跑赢通胀

常见错误对照

1.年化收益率填了月收益率或日收益率

✗ 错误月收益 1%,年化填 1
✓ 修复年化填 12.68(月复利等效年化)

年化收益率是复利计算的核心输入,必须使用年化后的百分比值。月收益率 1% 按复利计算年化约 12.68%,直接填 1 会导致结果严重偏低。

2.通胀调整填了绝对值而非百分比

✗ 错误通胀率填 3(想表示 3%)
✓ 修复通胀率填 3(工具提示单位为 % 时)或 0.03(工具提示单位为小数时)

通胀调整参数的单位必须与工具界面的标注一致。若工具标注单位为 %,填 3 表示 3%;若标注为小数,填 0.03 表示 3%。混用会导致实际购买力计算完全错误。

3.复投频率与年化收益率周期不匹配

✗ 错误年化 12%,复投频率选「每月」,但输入的年化是单利年化
✓ 修复年化 12%,复投频率选「每月」时,年化应为等效复利年化(如 12.68%)或直接使用月收益率 1%

复利计算器假设年化收益率已经考虑了复投频率的影响。若年化是单利值,与每月复投组合会高估实际收益;正确做法是使用等效复利年化或直接输入与复投周期匹配的收益率。

4.起始本金填了包含未来收入的总额

✗ 错误计划每月定投 1000,起始本金填 12000(一年总额)
✓ 修复起始本金只填当前已有本金,如 0;每月定投在「追加投入」或「定投」字段单独设置

起始本金是初始一次性投入金额,不是未来所有投入的总和。将未来定投额合并到起始本金中会错误地让这笔钱从第一天就开始复利,导致结果虚高。

5.通胀调整只调了本金没调收益

✗ 错误起始本金 10000,通胀率 3%,计算时只把本金按通胀折现
✓ 修复通胀调整应作用于最终结果(未来值折现到当前购买力),而非单独调整本金

通胀调整的正确逻辑是:先按名义年化计算未来值,再用通胀率将未来值折现回当前购买力。单独调整本金会破坏复利乘法的数学结构,得到无意义的数字。

6.忽略复利计算器的「实际天数」与「按年简化」差异

✗ 错误投资期 3 年零 5 个月,直接填 3.42 年
✓ 修复若工具支持精确天数,使用「年+月」或「天数」输入;否则按整年计算后手动调整

按年简化(如 3.42 年)假设每年 365 天均匀复利,但实际复利是按复投周期(月/季/年)在固定日期执行。非整数年使用小数输入会引入误差,尤其复投频率高时差异明显。

7.复投频率选了「连续复利」但输入的是离散年化

✗ 错误年化 10%,复投频率选「连续」
✓ 修复连续复利需输入连续复利收益率(如 ln(1+10%) ≈ 9.53%),或工具自动转换

连续复利与离散复利的收益率不可直接互换。年化 10% 通常是离散复利概念,直接用于连续复利公式 e^(rt) 会得到错误终值。多数在线工具不提供连续复利选项,若提供则需确认输入含义。

第三节

工作原理

How It Works

核心公式

FV = P × (1 + r/n)^(n×t) × (1 - i)^t

变量说明

  • FV终值,通胀调整后的未来金额
  • P起始本金,初始投入金额
  • r年化收益率,小数形式(如 0.08)
  • n每年复投次数(1/4/12/365)
  • t投资年限,单位年
  • i年通胀率,小数形式(如 0.03)

示例

本金 100,000 元,年化 8%,每月复投(n=12),持有 10 年,年通胀 3%。先算复利终值:100000 × (1 + 0.08/12)^(12×10) ≈ 100000 × (1.0066667)^120 ≈ 100000 × 2.21964 ≈ 221,964 元。再扣通胀:221964 × (1 - 0.03)^10 ≈ 221964 × 0.73742 ≈ 163,700 元。最终购买力约 16.37 万元。

起始本金年化收益率复投频率投资年限逐期迭代本金+利息复投再计息通胀调整终值实际购买力
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

6 种主流语言实现,复制即用:

def compound_interest(principal, rate, years, compounds_per_year, inflation=0): """ 复利终值计算(含通胀调整) :param principal: 起始本金 :param rate: 年化收益率(小数,如 0.08) :param years: 投资年限 :param compounds_per_year: 年复投次数(1=年复利,12=月复利) :param inflation: 年通胀率(小数,默认 0) :return: 终值(名义/实际) """ if principal <= 0 or rate < 0 or years <= 0: raise ValueError("本金须为正数,年化/年限须非负") nominal = principal * (1 + rate / compounds_per_year) ** (compounds_per_year * years) if inflation > 0: real = nominal / ((1 + inflation) ** years) return round(nominal, 2), round(real, 2) return round(nominal, 2), None # 示例:10万元本金,年化8%,月复投,5年,通胀3% p, r, y, c, inf = 100000, 0.08, 5, 12, 0.03 nom, real = compound_interest(p, r, y, c, inf) print(f"名义终值: {nom} 元") print(f"实际终值(扣除通胀): {real} 元" if real else "")
/** * 复利终值计算(含可选通胀调整) * @param {number} principal - 起始本金 * @param {number} rate - 年化收益率(小数,如 0.08) * @param {number} years - 投资年限 * @param {number} compoundsPerYear - 年复投次数 * @param {number} [inflation=0] - 年通胀率(小数) * @returns {{ nominal: number, real: number|null }} */ function compoundInterest(principal, rate, years, compoundsPerYear, inflation = 0) { if (principal <= 0 || rate < 0 || years <= 0) { throw new Error('本金须为正数,年化/年限须非负'); } const nominal = principal * Math.pow(1 + rate / compoundsPerYear, compoundsPerYear * years); const real = inflation > 0 ? nominal / Math.pow(1 + inflation, years) : null; return { nominal: +nominal.toFixed(2), real: real ? +real.toFixed(2) : null }; } // 示例:10万元本金,年化8%,月复投,5年,通胀3% const result = compoundInterest(100000, 0.08, 5, 12, 0.03); console.log(`名义终值: ${result.nominal} 元`); if (result.real !== null) console.log(`实际终值(扣除通胀): ${result.real} 元`);
package main import ( "fmt" "math" ) // CompoundInterest 计算复利终值(含通胀调整) // principal: 起始本金, rate: 年化收益率, years: 年限, compoundsPerYear: 年复投次数, inflation: 年通胀率 func CompoundInterest(principal, rate float64, years int, compoundsPerYear int, inflation float64) (nominal, real float64) { if principal <= 0 || rate < 0 || years <= 0 { panic("本金须为正数,年化/年限须非负") } nominal = principal * math.Pow(1+rate/float64(compoundsPerYear), float64(compoundsPerYear*years)) nominal = math.Round(nominal*100) / 100 if inflation > 0 { real = nominal / math.Pow(1+inflation, float64(years)) real = math.Round(real*100) / 100 } return } func main() { // 示例:10万元本金,年化8%,月复投,5年,通胀3% nom, real := CompoundInterest(100000, 0.08, 5, 12, 0.03) fmt.Printf("名义终值: %.2f 元\n", nom) if real > 0 { fmt.Printf("实际终值(扣除通胀): %.2f 元\n", real) } }
#!/bin/bash # 复利终值计算(bash 浮点运算需借助 bc) # 参数:本金 年化 年限 年复投次数 [通胀率] compound_interest() { local p=$1 r=$2 y=$3 n=$4 inf=${5:-0} # 名义终值 = p * (1 + r/n)^(n*y) local nominal=$(echo "scale=10; $p * (1 + $r / $n) ^ ($n * $y)" | bc -l) nominal=$(printf "%.2f" $nominal) if (( $(echo "$inf > 0" | bc -l) )); then local real=$(echo "scale=10; $nominal / (1 + $inf) ^ $y" | bc -l) real=$(printf "%.2f" $real) echo "名义终值: $nominal 元" echo "实际终值(扣除通胀): $real 元" else echo "名义终值: $nominal 元" fi } # 示例:10万元本金,年化8%,月复投,5年,通胀3% compound_interest 100000 0.08 5 12 0.03
public class CompoundInterest { /** * 计算复利终值 * @param principal 起始本金 * @param rate 年化收益率(小数) * @param years 年限 * @param compoundsPerYear 年复投次数 * @param inflation 年通胀率(小数,0 表示不调整) * @return [名义终值, 实际终值](实际终值可能为 null) */ public static double[] calculate(double principal, double rate, int years, int compoundsPerYear, double inflation) { if (principal <= 0 || rate < 0 || years <= 0) { throw new IllegalArgumentException("本金须为正数,年化/年限须非负"); } double nominal = principal * Math.pow(1 + rate / compoundsPerYear, compoundsPerYear * years); nominal = Math.round(nominal * 100.0) / 100.0; double real = 0; if (inflation > 0) { real = nominal / Math.pow(1 + inflation, years); real = Math.round(real * 100.0) / 100.0; } return new double[]{nominal, real}; } public static void main(String[] args) { // 示例:10万元本金,年化8%,月复投,5年,通胀3% double[] result = calculate(100000, 0.08, 5, 12, 0.03); System.out.printf("名义终值: %.2f 元%n", result[0]); if (result[1] > 0) { System.out.printf("实际终值(扣除通胀): %.2f 元%n", result[1]); } } }
<?php /** * 复利终值计算(含通胀调整) * @param float $principal 起始本金 * @param float $rate 年化收益率(小数) * @param int $years 年限 * @param int $compoundsPerYear 年复投次数 * @param float $inflation 年通胀率(小数,默认 0) * @return array ['nominal' => float, 'real' => float|null] */ function compoundInterest($principal, $rate, $years, $compoundsPerYear, $inflation = 0.0) { if ($principal <= 0 || $rate < 0 || $years <= 0) { throw new InvalidArgumentException('本金须为正数,年化/年限须非负'); } $nominal = $principal * pow(1 + $rate / $compoundsPerYear, $compoundsPerYear * $years); $nominal = round($nominal, 2); $real = ($inflation > 0) ? round($nominal / pow(1 + $inflation, $years), 2) : null; return ['nominal' => $nominal, 'real' => $real]; } // 示例:10万元本金,年化8%,月复投,5年,通胀3% $result = compoundInterest(100000, 0.08, 5, 12, 0.03); echo "名义终值: {$result['nominal']} 元\n"; if ($result['real'] !== null) { echo "实际终值(扣除通胀): {$result['real']} 元\n"; }
第五节

常见问题

Q & A
这个复利计算器能不能算每月定投?

可以。起始本金填第一笔投入金额,年化填预期年收益率,复投频率选「每月」。工具会自动把年化收益率换算成月复利,计算每月复投后的终值。注意:如果每月有固定追加投资,目前版本暂不支持「每月额外定额存入」,仅支持本金一次性投入后的月复利滚动。

年化收益率填 10%,为什么最后收益比手算少?

大概率是复投频率选错了。如果选「每年复投」,工具按年滚利;如果选「每月复投」,则每月滚一次,实际年化会略高于 10%(即有效年利率更高)。手算通常按年复利,所以结果偏小。建议先确认手算时假设的复投频率,再在工具里选对应选项。

通胀调整打开后,数字反而变小了,是不是算错了?

没算错。通胀调整是把未来终值按预估通胀率折现到今天的购买力。比如年化 8%、通胀 3%,实际购买力增长只有约 4.85%。工具先算名义终值,再按复利通胀率折现,所以显示的数字比名义值小,这恰恰是真实的购买力结果。如果不需要看通胀影响,关闭该开关即可。

为什么我输入本金 100 万、年化 10%、投 30 年,结果和银行理财经理算的不一样?

差异通常出在「复投频率」和「计息方式」。银行理财常用「单利」或「年复利」,而本工具默认按你选的复投频率(如每月/每季)滚动。另外,银行产品常有认购期、赎回期不计息,工具不考虑这些非投资期。建议把复投频率改为「每年」,再对比看是否一致。

这个计算器是纯前端算的,数据会上传到服务器吗?

不会。本工具完全在浏览器本地运行,输入的本金、年化等数据不会离开你的设备,也没有网络请求。刷新页面或关闭标签页后数据自动清除,适合处理敏感金额信息。

计算结果里的「总投入」和「总收益」为什么加起来不等于终值?

终值 = 总投入 + 总收益。如果发现不等,先检查「通胀调整」是否开启。开启后,终值显示的是折现后的购买力,而总投入和总收益仍是名义值,所以三者对不上。关闭通胀调整后,终值应等于总投入加总收益。

我算 5 年和算 10 年,为什么收益差距比我想象的大很多?

这就是复利指数效应的体现。本金相同、年化相同,时间越长,复利滚动的基数越大。比如 10 万本金年化 10%,5 年后约 16.1 万,10 年后约 25.9 万——5 年赚 6 万,后 5 年赚近 10 万。工具结果区会展示逐年明细表,可以直观看到每一年收益的加速增长。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭