为什么字符串不能将输出识别为整数

问题描述 投票:1回答:3
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位浮点数。

python
3个回答
2
投票

你正在增加余额。试试这个:

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

0
投票

您的运算符优先级不正确:赋值运算符是最后一个。因此,你所做的就是

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))

0
投票

你应该注意操作的顺序。 balance *= 0.05 + balance将添加0.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}')
© www.soinside.com 2019 - 2024. All rights reserved.