Python实现复利计算的代码存在问题,该如何修复?
复利计算代码修复方案
现有代码问题
- 误用整数除法
//:rate//100会直接丢弃利率小数部分,例如4.5%利率运算结果为0,直接导致逻辑失效;末尾的//lastmoney也会错误丢弃计算结果的小数部分,得到完全错误的年数。 - 复利公式不符合数学定义:当前逻辑完全偏离复利计算规则,正确的复利增长公式为
最终资产 = 初始本金 * (1 + 年利率/100) ** 年数,求解达标年数需要使用对数推导,而非现有代码中的乘法除法逻辑。 - 缺少边界判断:未处理初始本金已经大于等于目标金额的场景。
修复后代码
import math def compound_interest(money, lastmoney, rate): # 初始本金已达标直接返回0年 if money >= lastmoney: return 0 # 对数推导所需年数 required_year = math.log(lastmoney / money) / math.log(1 + rate / 100) # 向上取整,不满1年按完整1年计算收益 return math.ceil(required_year) # 接收用户输入 money = float(input('初始本金: ')) rate = float(input('年利率(%): ')) lastmoney = float(input('目标金额: ')) amountyear = compound_interest(money, lastmoney, rate) print(f"所需年数: {amountyear}")
效果验证
输入初始本金10000、年利率5、目标金额20000,输出结果为15,符合72法则的估算结果(5%复利翻倍约需14.4年,向上取整为15年)。
内容的提问来源于stack exchange,提问作者user17097848
相关产品推荐
相关产品推荐

