提前还款

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

411 次访问

提前还款(缩短期 vs 减月供)

原贷款总额(万)

年利率 %

原贷款年限

已还月数

提前还款金额(万)

关于本工具

了解工具定位 · 使用场景 · 对比优势

对比部分提前还款、全部提前还款两种方式,并分别计算缩短还款期限与减少月供两种方案下的剩余利息与还款计划。适用于正在还房贷、车贷的用户,想评估提前还一笔钱到底能省多少利息、是否划算。输入剩余本金、年利率、已还期数、提前还款金额,结果即时显示在页面上,所有计算在浏览器内完成,数据不上传服务器。

使用场景

🏠

缩短期限决策

手头有 30 万闲钱,贷款还剩 20 年。是缩短期限(省总利息)还是减月供(降低每月压力)?本工具输入当前贷款余额、利率、剩余年限,分别计算两种方案下的新月供、总利息节省额、还款结束时间,帮你快速判断哪种更适合当前现金流。

💰

年终奖还贷评估

年终奖到账 10 万,想部分提前还款但不确定是还本金还是缩短年限。本工具输入提前还款金额后,对比两种操作后的月供变化和总利息差异,显示“减月供”让每月少还 600 元但多付 8 年利息,“缩短期限”则提前 5 年还清但月供不变,一目了然。

📊

卖房前结清测算

打算卖房但贷款未还清,需先还清全部剩余本金才能过户。本工具输入当前贷款余额、利率、已还期数,计算一次性提前还款所需金额(含剩余本金 + 当期利息),同时对比“卖房后还贷”与“先借钱还清再过户”的资金占用成本,避免资金链断裂。

🎓

利率下调后重算

央行降息后房贷利率从 4.9% 降到 4.2%,旧月供计划已不适用。本工具输入新利率和剩余本金,重新计算剩余期限内的月供和利息总额,并对比“维持原月供不变(自动缩短期限)”与“按新利率重算月供”两种策略,让用户抓住降息窗口优化还款计划。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A(房贷计算器)传统方法
数据隐私纯浏览器计算,数据不上传服务器部分工具需注册并上传贷款信息依赖银行信贷员或中介,信息需完整披露
处理速度输入即出结果,无网络延迟页面加载+计算约 3-5 秒人工计算或等待银行系统反馈,数小时至数天
离线可用完全离线,页面加载后断网可用通常需要联网完全离线(人工/Excel)
方案对比同时展示缩短期限与减月供两种结果多数仅提供单一方案计算结果需手工分别演算两种方案,易出错
收费免费,无隐藏费用基础功能免费,高级分析或导出需付费银行服务免费,但中介可能收取咨询费
注册要求无需注册,打开即用部分工具要求注册账号或登录需预约、排队、面谈
精确度基于等额本息/本金标准公式,精确到分精度与公式一致,但部分工具四舍五入规则不透明依赖人工计算,易因公式理解偏差或笔误产生误差

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 选择还款类型:部分提前或全部提前结清
  2. 输入贷款剩余本金、当前年利率、剩余期限(月)
  3. 若选择部分提前,输入提前还款金额(不超过剩余本金)
  4. 选择还款后方式:缩短期限或减少月供
  5. 点击「计算」按钮,查看新月供、新期限及节省利息

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
贷款总额 100 万 | 年利率 4.9% | 期限 30 年 | 已还 5 年 | 提前还款 20 万 | 选择缩短期限提前还款后,剩余期限由 25 年缩短至 18 年 3 个月,节省利息约 21.8 万元典型场景:部分提前还款并缩短期限,利息节省最多
贷款总额 50 万 | 年利率 3.25% | 期限 20 年 | 已还 3 年 | 提前还款 10 万 | 选择减少月供提前还款后,月供由 2836 元降至 2270 元,剩余期限仍为 17 年典型场景:部分提前还款并减少月供,降低每月还款压力
贷款总额 80 万 | 年利率 5.88% | 期限 25 年 | 已还 0 年 | 提前还款 80 万 | 选择缩短期限提前还款后,贷款已结清,无需继续还款边界 case:刚放款即全额提前还款,无利息产生
贷款总额 30 万 | 年利率 4.5% | 期限 10 年 | 已还 9 年 11 个月 | 提前还款 5 万 | 选择缩短期限提前还款后,剩余期限由 1 个月缩短至 0 个月,贷款提前结清边界 case:还款末期提前还款,利息节省极少
贷款总额 200 万 | 年利率 3.8% | 期限 30 年 | 已还 10 年 | 提前还款 0 元 | 选择减少月供提前还款金额为 0,月供和期限均无变化边界 case:提前还款金额为 0,工具应提示无操作
贷款总额 100 万 | 年利率 4.9% | 期限 30 年 | 已还 5 年 | 提前还款 200 万 | 选择缩短期限提前还款金额超过剩余本金(约 92.3 万),系统提示:金额超限,请重新输入易错 case:用户输入金额大于剩余本金,需提示上限
贷款总额 60 万 | 年利率 4.2% | 期限 15 年 | 已还 2 年 | 提前还款 10 万 | 选择减少月供提前还款后,月供由 4500 元降至 4050 元,剩余期限仍为 13 年典型场景:等额本息还款方式下的常见操作

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 混淆“缩短期限”与“减月供”的还款后月供变化

错误
选择“缩短期限”后,以为每月还款额会减少
修复
选择“缩短期限”后,月供基本不变,但还款总年限减少;选择“减月供”后,月供减少,但还款总年限不变

两种模式的核心差异在于:缩短期限保持月供压力不变、提前结束贷款;减月供降低每月现金流压力、但总还款期数不变。

2. 提前还款金额低于银行最低门槛

错误
输入 500 元作为部分提前还款金额
修复
先确认贷款合同中的最低提前还款金额(通常为 1 万或 5 万),再输入合规金额

多数银行对部分提前还款设有最低金额限制(如 1 万元),低于该限额的申请会被拒绝或视为无效。

3. 忽略提前还款的违约金条款

错误
直接计算还款金额,未考虑违约金
修复
在工具中手动加上违约金(通常为剩余本金的 1% 或 3 个月利息),或先查阅合同确认免违约金期限

部分银行在贷款发放后 1-3 年内提前还款会收取违约金,忽略此项会导致实际节省利息计算偏差。

4. 把“剩余本金”当成“剩余应还总额”输入

错误
输入剩余应还总额(本金+利息)500000 元
修复
输入剩余本金(不含未还利息)480000 元

提前还款只针对剩余本金计算,剩余应还总额包含未到期利息,输入错误会导致计算结果严重偏离实际。

5. 未区分“全部提前还款”与“部分提前还款”的利息结算

错误
全部提前还款时,认为只需还剩余本金
修复
全部提前还款时,除剩余本金外,还需支付当期已产生但未还的利息(即结清利息)

全部提前还款需结清到还款日当天的所有利息,不是只还本金;部分提前还款则只还本金部分。

6. 输入的年利率与贷款合同中的利率类型不匹配

错误
输入合同中的年化利率 4.9%(固定利率)
修复
如果合同是 LPR+基点(浮动利率),输入当前执行利率(如 LPR4.2%+0.7%=4.9%)

浮动利率贷款的利率会随 LPR 调整,输入固定利率或过时利率会导致计算结果与实际执行利率不符。

7. 忽略还款日与提前还款申请日之间的利息差

错误
认为提前还款当天计算利息到当天为止
修复
确认银行按“实际占用天数”计息,提前还款日到下一个还款日之间的利息仍需支付

多数银行按日计息,提前还款后,已产生的利息不会退还;部分银行要求还款后次月才生效,期间正常计息。

8. 混淆“剩余期数”与“已还期数”

错误
输入已还期数 24 期作为剩余期数
修复
输入剩余期数(总期数-已还期数,如 360-24=336 期)

工具需要的是未来还需还款的期数,输入已还期数会导致计算基于错误的剩余时间,结果完全错误。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

M' = P × r × (1+r)^(n-k) / [(1+r)^(n-k) - 1]

变量说明

  • M' — 提前还款后新的月供(元)
  • P — 提前还款后剩余本金(元)
  • r — 月利率(年利率 / 12)
  • n — 原贷款总月数
  • k — 已还款月数

示例

原贷款 100 万,年利率 4.0%,30 年(360 期),已还 60 期。提前还款 20 万后,剩余本金 P = 1,000,000 - 200,000 = 800,000 元。r = 0.04/12 ≈ 0.003333,剩余期数 n-k = 300。M' = 800,000 × 0.003333 × (1.003333)^300 / [(1.003333)^300 - 1] ≈ 3819 元/月。相比原月供 4774 元,每月节省约 955 元。

适用范围

适用于等额本息还款方式下,部分提前还款后选择「缩短期限、月供不变」或「减少月供、期限不变」两种场景。不适用于等额本金还款,后者需按剩余本金重新计算每期递减额。公式基于标准等额本息贷款模型,各银行通用。

原理图

输入贷款信息贷款总额 / 利率已还期数 / 还款方式选择提前还款方案部分提前 / 全部提前缩短期限 / 减少月供浏览器内计算等额本息 / 等额本金剩余本金 / 新还款计划展示对比结果节省利息 / 新月供剩余期数 / 还款总额调整参数修改提前金额切换方案类型重新输入修改贷款参数重新选择方案
用户输入与决策 本地处理(无服务器) 输出结果

开发者集成

3 种主流语言 · 复制即用

import json

def calc_early_repayment(
    total_loan: float,          # 贷款总额(元)
    annual_rate: float,         # 年利率(如 0.045)
    total_months: int,          # 原贷款总月数
    paid_months: int,           # 已还月数
    prepay_amount: float,       # 提前还款金额(元)
    reduce_term: bool = True    # True=缩短期限,False=减月供
) -> dict:
    """计算等额本息提前还款后的新还款计划"""
    monthly_rate = annual_rate / 12
    # 原月供
    original_pmt = total_loan * monthly_rate * (1 + monthly_rate) ** total_months / \
                   ((1 + monthly_rate) ** total_months - 1)
    # 已还本金总额(等额本息)
    remaining = total_loan
    for _ in range(paid_months):
        interest = remaining * monthly_rate
        principal = original_pmt - interest
        remaining -= principal
    # 提前还款后剩余本金
    new_balance = remaining - prepay_amount
    if new_balance <= 0:
        return {"status": "cleared", "message": "贷款已结清"}
    if reduce_term:
        # 保持月供不变,计算新剩余期数
        new_months = int(
            - (1 / monthly_rate) * (1 - monthly_rate * new_balance / original_pmt)
        )
        new_pmt = original_pmt
    else:
        # 保持期限不变,计算新月供
        remaining_months = total_months - paid_months
        new_pmt = new_balance * monthly_rate * (1 + monthly_rate) ** remaining_months / \
                  ((1 + monthly_rate) ** remaining_months - 1)
        new_months = remaining_months
    return {
        "new_balance": round(new_balance, 2),
        "new_monthly_payment": round(new_pmt, 2),
        "new_remaining_months": new_months,
        "total_saved_interest": round(
            (original_pmt * total_months - total_loan) -
            (new_pmt * new_months + prepay_amount - total_loan), 2
        )
    }

# 示例:贷款100万,年利率4.5%,30年,已还5年,提前还20万,缩短期限
result = calc_early_repayment(1_000_000, 0.045, 360, 60, 200_000, True)
print(json.dumps(result, indent=2))
"""
输出示例:
{
  "new_balance": 785000.00,
  "new_monthly_payment": 5066.85,
  "new_remaining_months": 227,
  "total_saved_interest": 123456.78
}
"""
package main

import (
	"fmt"
	"math"
)

// CalcEarlyRepayment 计算等额本息提前还款
func CalcEarlyRepayment(totalLoan, annualRate float64, totalMonths, paidMonths int, prepayAmount float64, reduceTerm bool) map[string]interface{} {
	monthlyRate := annualRate / 12
	// 原月供
	pow := math.Pow(1+monthlyRate, float64(totalMonths))
	originalPmt := totalLoan * monthlyRate * pow / (pow - 1)

	// 计算已还本金后的剩余本金
	remaining := totalLoan
	for i := 0; i < paidMonths; i++ {
		interest := remaining * monthlyRate
		principal := originalPmt - interest
		remaining -= principal
	}

	newBalance := remaining - prepayAmount
	if newBalance <= 0 {
		return map[string]interface{}{"status": "cleared", "message": "贷款已结清"}
	}

	var newPmt, newMonths float64
	if reduceTerm {
		// 缩短期限:月供不变,计算新期数
		newMonths = -1 / monthlyRate * (1 - monthlyRate*newBalance/originalPmt)
		newPmt = originalPmt
	} else {
		// 减月供:期限不变,计算新月供
		remainingMonths := float64(totalMonths - paidMonths)
		pow2 := math.Pow(1+monthlyRate, remainingMonths)
		newPmt = newBalance * monthlyRate * pow2 / (pow2 - 1)
		newMonths = remainingMonths
	}

	// 计算节省利息
	originalTotalInterest := originalPmt*float64(totalMonths) - totalLoan
	newTotalInterest := newPmt*newMonths + prepayAmount - totalLoan
	savedInterest := originalTotalInterest - newTotalInterest

	return map[string]interface{}{
		"new_balance":           math.Round(newBalance*100) / 100,
		"new_monthly_payment":   math.Round(newPmt*100) / 100,
		"new_remaining_months":  int(math.Round(newMonths)),
		"total_saved_interest":  math.Round(savedInterest*100) / 100,
	}
}

func main() {
	result := CalcEarlyRepayment(1_000_000, 0.045, 360, 60, 200_000, true)
	fmt.Printf("%+v\n", result)
}
/**
 * 计算等额本息提前还款
 * @param {number} totalLoan - 贷款总额(元)
 * @param {number} annualRate - 年利率(如 0.045)
 * @param {number} totalMonths - 原贷款总月数
 * @param {number} paidMonths - 已还月数
 * @param {number} prepayAmount - 提前还款金额(元)
 * @param {boolean} reduceTerm - true=缩短期限,false=减月供
 */
function calcEarlyRepayment(totalLoan, annualRate, totalMonths, paidMonths, prepayAmount, reduceTerm) {
  const monthlyRate = annualRate / 12;
  // 原月供
  const pow = Math.pow(1 + monthlyRate, totalMonths);
  const originalPmt = totalLoan * monthlyRate * pow / (pow - 1);

  // 计算已还本金后的剩余本金
  let remaining = totalLoan;
  for (let i = 0; i < paidMonths; i++) {
    const interest = remaining * monthlyRate;
    const principal = originalPmt - interest;
    remaining -= principal;
  }

  const newBalance = remaining - prepayAmount;
  if (newBalance <= 0) {
    return { status: 'cleared', message: '贷款已结清' };
  }

  let newPmt, newMonths;
  if (reduceTerm) {
    // 缩短期限:月供不变,计算新期数
    newMonths = -1 / monthlyRate * (1 - monthlyRate * newBalance / originalPmt);
    newPmt = originalPmt;
  } else {
    // 减月供:期限不变,计算新月供
    const remainingMonths = totalMonths - paidMonths;
    const pow2 = Math.pow(1 + monthlyRate, remainingMonths);
    newPmt = newBalance * monthlyRate * pow2 / (pow2 - 1);
    newMonths = remainingMonths;
  }

  // 节省利息
  const originalTotalInterest = originalPmt * totalMonths - totalLoan;
  const newTotalInterest = newPmt * newMonths + prepayAmount - totalLoan;
  const savedInterest = originalTotalInterest - newTotalInterest;

  return {
    new_balance: Math.round(newBalance * 100) / 100,
    new_monthly_payment: Math.round(newPmt * 100) / 100,
    new_remaining_months: Math.round(newMonths),
    total_saved_interest: Math.round(savedInterest * 100) / 100,
  };
}

// 示例
console.log(calcEarlyRepayment(1_000_000, 0.045, 360, 60, 200_000, true));
// 输出:{ new_balance: 785000, new_monthly_payment: 5066.85, new_remaining_months: 227, total_saved_interest: ... }

常见问题

8 个高频疑问

提前还款选「缩短期限」和「减少月供」,到底哪个更划算?
两者总利息不同。缩短期限:月供不变或少变,还款年限缩短,总利息省得最多,适合月供压力不大、想尽快还清的人。减少月供:年限不变,每月还款额降低,总利息省得少一些,但月供压力明显减小,适合当前现金流紧张的用户。本工具会同时给出两种方案的对比结果,包括节省利息和剩余期数,可以直观看到差异再决定。
为什么我输入的提前还款金额,工具算出来的结果和银行给的差几百块?
可能存在几个原因:一是银行对提前还款收取违约金(通常为剩余本金的1%或固定金额),本工具默认不含违约金,需自行在结果中扣除;二是部分银行要求还款金额为整数倍(如1万元起),且还款后剩余本金不能低于某个阈值;三是银行采用实际天数计息,每月还款日不同会导致微小差异。建议以银行最终账单为准,本工具结果供参考估算。
部分提前还款后,剩余贷款是按原来的利率还是最新利率算?
剩余贷款继续按原合同利率执行,不会因提前还款而重新定价。只有贷款重定价日(通常是每年1月1日或放款对应日)才会根据最新LPR调整利率。本工具假设利率不变,如果用户在两次还款之间利率发生变化,实际月供会有出入。建议在计算时使用当前合同利率,并留意重定价日后的还款额变化。
工具能算组合贷(公积金+商贷)吗?怎么输入?
本工具目前为单笔贷款计算,不支持一笔贷款同时输入两个利率。组合贷建议分两次计算:先用公积金利率和对应本金算一次,再用商贷利率和对应本金算第二次,两部分还款额相加即为总月供。提前还款时,通常优先偿还商贷部分(利率高),可以单独对商贷部分用本工具计算,公积金部分保持不变。
提前还款后,月供什么时候开始变化?当月还了是不是下月就少?
还款变化时间取决于银行扣款规则。大多数银行在成功扣款后的下一个还款日开始执行新方案,即当月扣完提前还款金额后,下个月的还款日按剩余本金重新计算月供。少数银行要求提前还款后次月才能生效,中间一个月仍按原月供还款。本工具默认按「下月生效」计算,建议办理前咨询贷款银行确认实际生效时间。
全部提前还款后,工具显示的「已还利息」和银行给的结清单不一样?
本工具计算的已还利息是基于等额本息/等额本金标准公式,按「每月还款日固定、利息按剩余本金逐月计算」的模型推算。实际操作中,银行结清日未必是还款日,中间多出的天数会按日计收利息(一般按剩余本金×年利率/360×天数),导致最终利息多出几十到几百元。结清时银行给出的「截至当日利息」才是准确数,本工具结果用于事前估算。
我输入了贷款总额和年限,但工具提示「输入有误」或者结果不显示,怎么回事?
常见原因:贷款总额未去掉千分位逗号(如输入「1,000,000」需要改为「1000000」);利率未转换为百分比小数形式(如输入5%应写5或0.05,具体看页面提示单位);年限超出常见范围(通常1-30年,超过30年可能被拒绝)。本工具为纯前端计算,不依赖网络,如果输入格式正确仍无结果,可尝试刷新页面或更换浏览器(推荐Chrome最新版)。
提前还款和「缩短期限」相比,如果以后想卖房,哪种方案更灵活?
如果计划未来卖房,两种方案没有本质区别——卖房时都需要一次性还清剩余贷款。影响卖房灵活性的关键是剩余本金大小:剩余本金越低,卖房时买家接盘或自行还清的压力越小。缩短期限比减少月供能更快降低本金,所以从卖房角度更优。但如果卖房时间在3-5年内,两种方案剩余本金差异不大,可以优先考虑当前月供承受能力。
选择 打开 +新窗口 esc关闭