计算工具 · 房产税务

提前还款

部分提前/全提前/缩短期限 vs 减月供

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 54 次使用
原贷款金额100 万
万元
原年利率LPR / 历史利率
%
原贷款期限30 年
原还款方式
已还期数60 期
月供 ¥5,307 · 当前剩余本金 91.70 万
提前还款金额20 万
万元
提前还款发生在第几期还款后
默认 = 已还期数。若你打算未来某期再提前还,可单独设置。
是否划算 · 资金理财收益对比(可选)
这笔钱理财预期年化不提前还 · 拿去投资
%
输入参数即时计算 · 全程本地运算不上传
计算说明 / 决策提示

剩余本金(等额本息已还 k 期):B = P·(1+i)k − M·((1+i)k−1)/i,i 为月利率(年利率/12),M 为月供。

缩短期限:部分提前还款后月供保持不变,剩余本金减少使还清期数缩短,省息最多——适合希望尽快无债、且月供压力可承受者。

减少月供:剩余期数保持不变,按新本金重算月供,月供降低、省息较少——适合追求每月现金流宽松者。

是否划算:把提前还款省下的利息,与「这笔钱不还、拿去理财在剩余期限内的收益」对比。当贷款利率高于理财收益时,提前还款通常更划算;反之保留资金理财可能更优。

温馨提示:部分银行提前还款设有违约金(常见为提前还款额的 1%~3%,或要求还满一定年限)及预约排期,请以贷款合同与银行届时口径为准。本结果仅供决策参考,不构成金融建议。

第一节

关于本工具

About

房贷还了几年,手头有笔闲钱,想提前还一部分——但银行App上“缩短年限”和“减少月供”两个选项让人犹豫。这个工具把两种方案的剩余利息、月供变化、总还款额并列算出来,输入剩余本金、利率和计划还款额即可对比。计算全程在浏览器内完成,数据不上传服务器。

使用场景

年终奖到账犹豫

12 月底 8 万年终奖到账,小陈犹豫是直接还掉 30 万房贷本金中的 8 万,还是放理财。用本工具输入剩余本金 30 万、利率 4.2%、剩余期限 18 年,选「缩短期限」方案:月供不变,还款周期从 18 年缩至 13 年,利息省 5.2 万。理财年化 3% 的收益远低于省下的利息,决策立刻清晰。

卖房前算清尾款

房子挂中介半年终于有买家出价 200 万,但房贷还剩 65 万,买家要求净得价。刘姐用本工具输入剩余本金 65 万、利率 3.9%、剩余 22 年,选「全部提前」算出结清总额 65.3 万(含当月利息),确认卖房到手 134.7 万,避免中介口头估算的误差。

二套房利率切换抉择

张先生刚买二套房,贷款 120 万、利率 5.8%、30 年。手头有 20 万闲钱,纠结是提前还掉一部分还是留着装修。用本工具输入 120 万本金、5.8%、30 年,选「减月供」:还 20 万后月供从 7042 元降到 5880 元,每月省 1162 元,装修贷月供 800 元刚好覆盖,两笔现金流平衡。

父母资助还款规划

父母卖了老家房子给小林 50 万帮还房贷,小林剩余本金 85 万、利率 4.5%、25 年。用本工具输入数据后对比两种方案:选「缩短期限」月供不变,从 25 年缩至 12 年,利息省 28 万;选「减月供」月供从 4720 元降到 2030 元,但总利息只省 18 万。小林决定选缩短期限,争取 12 年内还清。

对比矩阵

维度本工具房贷计算器 App传统方法(线下/手工)
计算速度输入即出结果,无等待需点击计算按钮,有网络延迟手工公式计算,数分钟至数十分钟
方案对比同时展示缩短期限与减月供两种结果通常只显示一种方案,需手动切换需分别计算两次,易出错
离线可用纯浏览器计算,无需网络多数需联网,断网不可用完全离线,依赖纸笔
隐私数据不出浏览器,不上传服务器数据需上传至 App 服务器完全本地,无数据外泄风险
收费免费,无隐藏费用部分功能需付费或订阅免费,但耗时耗力
输入灵活度支持任意金额、期限、利率,无预设限制部分 App 限制利率范围或要求整数无限制,但计算繁琐
第二节

使用指南

Getting Started

使用步骤

  1. 1选择「部分提前还款」或「全部提前还款」,输入剩余本金和当前年利率
  2. 2填写已还款期数(月)和计划提前还款金额,勾选「缩短期限」或「减少月供」
  3. 3点击「开始计算」,结果区显示节省利息、新月供或新剩余期数
  4. 4调整提前还款金额或还款方式,结果实时更新,可对比不同方案差异

输入输出示例

输入输出说明
贷款总额:100万,年利率:4.9%,期限:30年,已还期数:60期,提前还款金额:20万,还款方式:等额本息,选择:缩短期限提前还款后,剩余期限缩短至约22年,节省利息约28.6万元,月供保持不变(约5307元)。常规:等额本息下部分提前还款并缩短期限,展示节省利息和期限变化,是用户最常用场景。
贷款总额:50万,年利率:3.25%,期限:20年,已还期数:0期,提前还款金额:50万,还款方式:等额本金,选择:全部提前还款全部提前还款,剩余本金为0,无需再还月供,节省利息约18.1万元。常规:刚放款即全额提前还款,验证工具对零已还期数的处理,以及全部结清时的利息节省计算。
贷款总额:200万,年利率:5.0%,期限:30年,已还期数:120期,提前还款金额:5万,还款方式:等额本息,选择:减少月供提前还款后,月供减少至约10320元(原月供约10736元),剩余期限不变(20年),节省利息约4.2万元。边界:极小提前还款金额(仅5万),验证工具能否正确处理微小金额对月供和利息的影响,避免舍入错误。
贷款总额:30万,年利率:4.0%,期限:10年,已还期数:119期,提前还款金额:10万,还款方式:等额本息,选择:缩短期限提前还款后,剩余本金约3.2万元,剩余期限缩短至约1个月,节省利息约0.1万元。边界:已还期数接近总期数(仅剩1期),验证工具对末期提前还款的处理,避免出现负期限或零本金计算异常。
贷款总额:80万,年利率:6.0%,期限:25年,已还期数:0期,提前还款金额:80万,还款方式:等额本金,选择:全部提前还款全部提前还款,剩余本金为0,节省利息约72.4万元。边界:等额本金方式下全额提前还款,验证工具对不同还款方式下利息节省计算的差异(等额本金前期利息占比高)。
贷款总额:100万,年利率:4.9%,期限:30年,已还期数:60期,提前还款金额:20万,还款方式:等额本息,选择:减少月供提前还款后,月供减少至约4240元(原月供约5307元),剩余期限不变(25年),节省利息约19.8万元。易错:用户常混淆“缩短期限”与“减少月供”,此例与第一条对比,展示相同输入但不同选择的结果差异,帮助理解。
贷款总额:150万,年利率:4.5%,期限:20年,已还期数:240期,提前还款金额:10万,还款方式:等额本息,选择:缩短期限已还清全部贷款,剩余本金为0,无需提前还款。易错:已还期数等于总期数(贷款已结清),工具应提示无法操作,避免用户误输入导致计算错误。

常见错误对照

1.混淆“缩短期限”与“减月供”的长期利息差异

✗ 错误选择“减月供”,认为能最快减少总利息
✓ 修复选择“缩短期限”,总利息节省更多

缩短期限减少利息支出的速度远快于减月供。减月供仅降低每月还款额,但贷款周期不变,利息总额降幅有限。

2.提前还款后忘记重新计算剩余期数

✗ 错误部分提前还款后,继续按原剩余期数还款
✓ 修复部分提前还款后,重新计算剩余期数(缩短期限)或保持原期数(减月供)

部分提前还款后,剩余本金减少,若选择缩短期限,剩余期数应相应减少;若选择减月供,剩余期数不变但月供降低。两者不可混用。

3.将“提前还款金额”误填为“剩余本金”

✗ 错误输入剩余贷款总额(如 500000),而非计划提前偿还的金额
✓ 修复输入计划提前偿还的金额(如 100000)

提前还款工具要求输入“本次提前还多少钱”,而非剩余贷款总额。填入剩余本金会导致计算逻辑错误,结果无意义。

4.忽略提前还款的违约金或手续费

✗ 错误计算时未考虑银行收取的违约金(如剩余本金的1%)
✓ 修复计算前先确认贷款合同中的提前还款违约金条款,并将违约金计入总成本

多数银行对提前还款收取违约金(如剩余本金的1%或月供的若干倍)。忽略此费用会导致实际节省金额被高估。

5.混淆“等额本息”与“等额本金”的提前还款策略

✗ 错误等额本息贷款在还款中期提前还款,认为节省利息效果相同
✓ 修复等额本息贷款建议在还款前期提前还款,等额本金贷款在前期或中期均可

等额本息前期利息占比高,提前还款能有效减少后续利息;等额本金每月还本固定,提前还款效果均匀分布。

6.提前还款后未更新贷款合同中的还款计划

✗ 错误提前还款后,继续按原还款计划还款,导致多还利息
✓ 修复提前还款后,立即与银行确认新的还款计划(月供或期数),并更新个人记账

银行系统不会自动调整还款计划,用户需主动申请变更。否则银行仍按原计划扣款,提前还款效果被抵消。

7.将“全部提前还款”与“结清贷款”混淆

✗ 错误选择“全部提前还款”后,认为贷款自动结清,不再处理后续手续
✓ 修复全部提前还款后,需到银行办理贷款结清证明、解除抵押等手续

全部提前还款只是还清剩余本金,贷款合同尚未终止。需完成结清手续,否则房产抵押状态未解除,影响后续交易。

8.忽略提前还款对个税专项附加扣除的影响

✗ 错误提前还款后,继续申报住房贷款利息专项附加扣除
✓ 修复提前还款后,确认贷款是否已结清,若结清则停止申报该扣除项

个税专项附加扣除要求贷款状态为“正在偿还”。提前还款后若贷款已结清,继续申报属于违规,可能面临补税和罚款。

第三节

工作原理

How It Works

核心公式

Δ月供 = 原月供 - 新月供,新月供 = 剩余本金 × [月利率 × (1+月利率)^剩余期数] / [(1+月利率)^剩余期数 - 1]

变量说明

  • 剩余本金提前还款后剩余未还本金
  • 月利率年利率 ÷ 12,如 4.2%→0.0035
  • 剩余期数提前还款后剩余还款月数
  • 原月供提前还款前每月固定还款额
  • 新月供提前还款后重新计算的月供

示例

贷款 100 万、年利率 4.2%、期限 30 年(360 期),已还 5 年(60 期),剩余本金 91.5 万。提前还 20 万,剩余本金变为 71.5 万,剩余期数 300 期,月利率 0.0035。新月供 = 715000 × [0.0035×(1.0035)^300] / [(1.0035)^300 - 1] ≈ 715000 × 0.00537 ≈ 3840 元。原月供 4890 元,Δ月供 = 4890 - 3840 = 1050 元/月。

输入还款信息(贷款总额/已还期数/利率)计算剩余本金(等额本息/等额本金)模式判断(缩短期限/减月供)输出结果部分提前还款(输入提前金额)重新计算月供/期限(按选择模式)用户选择(缩短期限/减月供)最终还款计划
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

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

import math def partial_prepay(balance, rate_annual, remaining_months, prepay_amount, reduce_term=True): """ 部分提前还款计算 :param reduce_term: True=缩短期限, False=减少月供 :return: (new_monthly, new_months) 或 (new_monthly, new_months) """ monthly_rate = rate_annual / 12 # 原月供(等额本息) original_monthly = balance * monthly_rate * (1 + monthly_rate)**remaining_months / ((1 + monthly_rate)**remaining_months - 1) new_balance = balance - prepay_amount if reduce_term: # 保持月供不变,缩短期限 n = math.log(original_monthly / (original_monthly - new_balance * monthly_rate)) / math.log(1 + monthly_rate) new_months = math.ceil(n) return round(original_monthly, 2), new_months else: # 保持期限不变,减少月供 new_monthly = new_balance * monthly_rate * (1 + monthly_rate)**remaining_months / ((1 + monthly_rate)**remaining_months - 1) return round(new_monthly, 2), remaining_months # 示例:贷款100万,年利率4.5%,剩余20年(240期),提前还20万 print(partial_prepay(1000000, 0.045, 240, 200000, reduce_term=True)) # 输出: (6326.49, 171) # 月供不变,剩余期数缩短至171个月 print(partial_prepay(1000000, 0.045, 240, 200000, reduce_term=False)) # 输出: (5061.19, 240) # 期限不变,月供降至5061.19元
/** * 提前还款计算(等额本息) * @param {number} balance - 剩余本金 * @param {number} rateAnnual - 年利率(小数) * @param {number} remainingMonths - 剩余期数 * @param {number} prepayAmount - 提前还款金额 * @param {boolean} reduceTerm - true=缩短期限,false=减少月供 * @returns {{ monthly: number, months: number }} */ function partialPrepay(balance, rateAnnual, remainingMonths, prepayAmount, reduceTerm = true) { const mr = rateAnnual / 12; // 原月供 const originalMonthly = balance * mr * Math.pow(1 + mr, remainingMonths) / (Math.pow(1 + mr, remainingMonths) - 1); const newBalance = balance - prepayAmount; if (reduceTerm) { // 保持月供,计算新期数 const n = Math.log(originalMonthly / (originalMonthly - newBalance * mr)) / Math.log(1 + mr); return { monthly: Math.round(originalMonthly * 100) / 100, months: Math.ceil(n) }; } else { // 保持期数,计算新月供 const newMonthly = newBalance * mr * Math.pow(1 + mr, remainingMonths) / (Math.pow(1 + mr, remainingMonths) - 1); return { monthly: Math.round(newMonthly * 100) / 100, months: remainingMonths }; } } // 示例 console.log(partialPrepay(1000000, 0.045, 240, 200000, true)); // { monthly: 6326.49, months: 171 } console.log(partialPrepay(1000000, 0.045, 240, 200000, false)); // { monthly: 5061.19, months: 240 }
package main import ( "fmt" "math" ) // PartialPrepay 提前还款计算 type Result struct { Monthly float64 Months int } func PartialPrepay(balance, rateAnnual float64, remainingMonths int, prepayAmount float64, reduceTerm bool) Result { mr := rateAnnual / 12 // 原月供(等额本息) pow := math.Pow(1+mr, float64(remainingMonths)) originalMonthly := balance * mr * pow / (pow - 1) newBalance := balance - prepayAmount if reduceTerm { // 缩短期限 n := math.Log(originalMonthly / (originalMonthly - newBalance*mr)) / math.Log(1+mr) return Result{math.Round(originalMonthly*100) / 100, int(math.Ceil(n))} } // 减少月供 pow2 := math.Pow(1+mr, float64(remainingMonths)) newMonthly := newBalance * mr * pow2 / (pow2 - 1) return Result{math.Round(newMonthly*100) / 100, remainingMonths} } func main() { fmt.Println(PartialPrepay(1000000, 0.045, 240, 200000, true)) // {6326.49 171} fmt.Println(PartialPrepay(1000000, 0.045, 240, 200000, false)) // {5061.19 240} }
#!/bin/bash # 提前还款计算(等额本息),依赖 bc # 用法: ./prepay.sh <本金> <年利率> <剩余期数> <提前还款额> [缩短期限(1)或减月供(0)] balance=$1 rate_annual=$2 remaining_months=$3 prepay=$4 reduce_term=${5:-1} mr=$(echo "scale=10; $rate_annual / 12" | bc) # 原月供 pow=$(echo "scale=10; e($remaining_months * l(1 + $mr))" | bc -l) original_monthly=$(echo "scale=10; $balance * $mr * $pow / ($pow - 1)" | bc) new_balance=$(echo "$balance - $prepay" | bc) if [ "$reduce_term" -eq 1 ]; then # 缩短期限 n=$(echo "scale=10; l($original_monthly / ($original_monthly - $new_balance * $mr)) / l(1 + $mr)" | bc -l) new_months=$(echo "scale=0; ($n + 0.9999) / 1" | bc) # 向上取整 echo "月供: $(printf '%.2f' $original_monthly), 剩余期数: $new_months" else # 减月供 pow2=$(echo "scale=10; e($remaining_months * l(1 + $mr))" | bc -l) new_monthly=$(echo "scale=10; $new_balance * $mr * $pow2 / ($pow2 - 1)" | bc) echo "月供: $(printf '%.2f' $new_monthly), 剩余期数: $remaining_months" fi # 示例 # bash prepay.sh 1000000 0.045 240 200000 1 # 输出: 月供: 6326.49, 剩余期数: 171
第五节

常见问题

Q & A
我想提前还10万,选“缩短期限”还是“减月供”哪个更划算?

从节省总利息看,缩短期限通常更划算。因为利息是按剩余本金×剩余时间计算的,缩短期限直接砍掉了未来多年的利息支出。比如贷款100万、利率4.2%、已还5年,提前还10万:选缩短期限约能省20万利息,选减月供约省13万。但减月供能降低每月还款压力,适合现金流紧张的情况。本工具会同时算出两种选项的对比结果,包括节省利息、新月供、新期限,可以直接对比选。

提前还款有没有违约金?这个工具怎么不算进去?

本工具只计算还款金额和利息变化,不涉及违约金,因为违约金由贷款银行/公积金中心规定,每家政策不同。常见情况:商贷满1年后提前还款通常免违约金,公积金贷款基本无违约金;部分银行对还款次数有限制(如一年只能提前1次)。建议操作前先查贷款合同或致电银行客服确认违约金条款,再结合本工具算出的节省金额,判断是否划算。

输入了贷款总额和已还月数,为什么算出来的结果和银行给我的不一样?

可能原因:1) 利率输入有误,银行实际执行利率可能上浮或打折,需从还款计划表里找精确年利率;2) 已还月数不对,银行是按放款日算起,不是按首次还款日;3) 还款方式选错,等额本息和等额本金每月还的本金不同,提前还款效果差异很大;4) 部分银行对提前还款金额有最低限额(如1万起或5万起),低于限额无法办理。建议核对贷款合同上的利率、还款方式、放款日期,重新输入。

公积金提前还款和商业贷款提前还款,在这个工具里都能算吗?

能。本工具支持两种贷款类型:商业贷款、公积金贷款、组合贷。输入时需选择贷款类型并填入对应利率。公积金贷款利率通常固定(首套3.1%、二套3.575%),商贷利率按LPR浮动。组合贷需分别输入商贷和公积金两部分的金额、利率、期限,工具会分别计算各自提前还款后的变化。注意:公积金提前还款通常只能减月供不能缩期限(各地政策不同),本工具按通用规则计算,具体以当地公积金中心为准。

我输入了“提前还款金额”,但提示输入不合法,怎么回事?

常见错误:1) 提前还款金额不能大于剩余本金,比如贷款还剩20万,填了25万就会报错;2) 部分银行有最低还款额限制,本工具默认最低1000元,低于此值会提示;3) 输入了非数字字符,如逗号、空格、汉字(只支持纯数字);4) 金额必须是正整数或正小数,不能为0或负数。请检查输入框旁边的说明文字,正常填写即可。如果金额较大(如50万以上),建议分段输入或确认贷款余额是否正确。

为什么我选“缩短期限”后,新期限显示为0个月?

出现0个月,说明提前还款金额过大,已经超过了剩余本金。比如贷款还剩10万,你填了提前还12万,那么剩余本金为负,工具无法计算。实际银行操作中,这种情况属于“提前结清”(全提前还款),本工具也支持全提前还款功能:输入金额等于或大于剩余本金时,结果会直接显示“已结清”,并给出节省利息和还款截止日期。如果只是想部分提前,请将金额控制在剩余本金以内。

提前还款后,新的月供是固定不变的吗?以后还会变吗?

分两种情况:1) 选“减月供”:提前还款后月供固定下降,之后不再变动(除非利率调整)。比如原月供5000元,提前还10万后新月供4000元,以后每月固定还4000。2) 选“缩短期限”:月供不变,但还款月数减少。如果贷款是浮动利率(如LPR),利率调整日(每年1月1日或放款日对应日)月供会重新计算。本工具按当前利率静态计算,不预测未来利率变动,结果仅供参考。

我每月都提前还一点,这个工具能算多次提前还款吗?

本工具目前只支持单次提前还款计算,不支持多次连续计算。如果需要模拟多次提前还款的效果,可以分步操作:第一次计算后记下新剩余本金和新月供,再作为新的初始条件输入工具重新算第二次。注意每次计算后剩余本金和期限都会变化,手动记录时建议用表格或记事本。如果频繁提前还款(如每月一次),实际节省的利息会逐次递减,不如攒够一笔一次性还更省事。

提前还款后,每个月的还款日是变还是不变?

还款日通常不变。绝大多数银行规定,提前还款后还款日仍按原贷款合同约定的日期执行(如每月10号)。但部分银行允许在办理提前还款时调整还款日(如改为发薪日),需主动申请。本工具不涉及还款日计算,只关注金额和期限变化。如果担心还款日调整导致逾期,建议在办理提前还款时向银行确认,或保持原还款日不变,确保账户余额充足。

组合贷提前还款,是先还商贷部分还是公积金部分?

从经济角度,优先还商贷部分,因为商贷利率(4%左右)远高于公积金(3.1%左右),提前还商贷节省的利息更多。但实际操作中,组合贷通常要求“先还商贷,再还公积金”或“按比例同时还”,具体看贷款银行规定。本工具支持分别输入商贷和公积金的还款金额,可以模拟不同策略的节省效果。例如:提前还10万,全部还商贷省利息5万;全部还公积金只省3万。建议先还商贷,除非公积金部分有特殊限制(如必须保留一定余额)。

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

选择 打开 +新窗口 esc关闭