我试图在Python2.7中计算贷款的平均加权利率。在
我一开始用的是浮点数,这是有问题的。考虑到这些输入(贷款1万美元6.80%;贷款2万美元7.90%;贷款3万美元5.41%),正确结果为6.7275。使用十进制,我的代码输出它。在
但是,我应该取这个数字并将向上取整到最接近的1/8%,结果显示为6.75。当我使用格式四舍五入到两个地方时,我得到6.73。虽然这是我所期望的,但不符合此函数应该做的范围。在
from decimal import Decimal
def weightedAvgFixedArgs(r1,r2,r3,b1,b2,b3):
rates = [Decimal(r1),Decimal(r2),Decimal(r3)]
balances = [Decimal(b1),Decimal(b2),Decimal(b3)]
a = Decimal(b1) * Decimal(r1)
b = Decimal(b2) * Decimal(r2)
c = Decimal(b3) * Decimal(r3)
perLoanWghtFctr = a + b + c
totalLoanAmt = sum(balances)
intRate = (perLoanWghtFctr / totalLoanAmt) * 100
return format(intRate, '.2f')
编辑:joachimisakson的建议提供了我请求的输出和我提供的输入。我没有在我的特定用例中对此进行过广泛的测试,但它正确地回答了我提出的问题。在
^{pr2}$
乘以8,取整或截断,然后除以8,下面是示例代码:
运行它你会得到:
^{pr2}$四舍五入到最接近的1/8%:
如果特别要求您将向上取整,则应该使用ceiling。在
相关问题 更多 >
编程相关推荐