我是编程新手,所以任何有经验的程序员都可能能够轻松回答这个问题。
我正在尝试编写一个 Python 函数,它会告诉我需要多少百分比的复利才能最终得到特定的总和。例如,如果我存入 100 美元,经过 17 年的复利后,我有 155 美元,该函数将告诉我收到的利息百分比是多少。我编写了以下函数,“开始”是原始存入的金额,“完成”是我最终得到的金额,“年”是应计利息的年数。我设计它以小数点形式给出结果,例如 1.5% 将显示 0.015。
这是我编写的代码:
def calculate(start, finish, years):
num = start
percentage = 0
while num < finish:
percentage += 0.000001
for year in range(years):
num += num * percentage
return percentage
print(calculate(12000, 55000, 100))
它给出的输出为 0.00017499999999999962(即 0.017499999999999962%),这是完全错误的。
我不明白我哪里出了问题。
最佳答案
每次猜测百分比后,您都需要重置num=start
。
def calculate(start, finish, years):
num = start
percentage = 0
while num < finish:
num = start
percentage += 0.000001
for year in range(years):
num += num * percentage
return percentage
print(calculate(12000, 55000, 100))
但是,您最好通过简单地重新排列复利公式来解决此问题:
A=P*(1+r/n)^(nt)
(其中,A
= 最终余额,P
= 初始余额,r
= 利率,n
=每个时间段应用利息的次数,t
= 已过去的时间段数。)
重新排列后得到:
r=n((A/P)^(1/nt)-1)
并将其放入 python 中可以得到:
def calculate(start, finish, years):
num = ((finish / start)**(1/years))-1
return num
print(calculate(12000.0, 55000.0, 100.0))
这给出了预期的结果。
关于计算复利百分比的Python函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65312798/