计算复利百分比的Python函数

标签 python function math

我是编程新手,所以任何有经验的程序员都可能能够轻松回答这个问题。

我正在尝试编写一个 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/

相关文章:

python - 栅格化 GDAL 层

python - 使用 numpy.loadtxt 加载复数

Python tabstop-aware len() 和填充函数

java - 用 vector 投影找点

java - 计算出 QuadCurveTo 的参数

Java:根据给定的详细信息生成可能性列表

Python/Django - 针对列表进行测试

python - 在 Python 中合并由空格分隔的字符串

Javascript:类构造函数基础知识 - 在单独的方法中定义属性

linux - 如何在bash_profile中编写函数