为什么字符串无法将我的输出识别为整数

时间:2019-02-21 22:24:00

标签: python

balance = int(100)
balance *= 0.05 + balance
balance *= 0.05 + balance
balance *= 0.05 + balance
print (int(round ( balance, '.2f' )))

我试图计算3年复利后100美元的利息。

我最初尝试过

balance = 100
balance *= 0.05 + balance
balance *= 0.05 + balance
balance *= 0.05 + balance
print  (format( balance, '.2f' ))

但是我的格式导致答案是万亿而不是5位浮点数。

3 个答案:

答案 0 :(得分:2)

您正在乘以余额。试试这个:

balance = int(100)
balance = balance * 0.05 + balance
balance = balance * 0.05 + balance
balance = balance * 0.05 + balance
print("{:.02f}".format(balance))

答案 1 :(得分:0)

您的运算符优先级不正确:赋值运算符为 last 。因此,您要做的就是

balance = balance * (0.05 + balance)

相反,请尝试一种表达兴趣的规范方法:

rate = 0.05
balance += balance * rate

balance *= (1 + rate)

不需要括号,但是可以帮助您阅读。

此外,您可以为重复设置一个参数(变量):

limit = 3
for year in range(limit):
    balance *= 1 + rate

print("{:.02f}".format(balance))

答案 2 :(得分:0)

您应注意操作顺序。 balance *= 0.05 + balance0.05balance相加,然后再乘以balance。您想要的是balance = balance + balance * 0.05balance = balance * 1.05

您可以创建一个函数来计算复利,以使其更容易:

def comp_int(balance, rate, years):
    return balance * (1 + rate)**years

balance = 100
rate = 0.05
years = 3
new_bal = comp_int(balance, rate, years)
print(f'{new_bal:.2f}')