【发布时间】:2018-10-20 17:22:21
【问题描述】:
我为学校做了一项工作,我必须在网站上提交该工作,以验证要求的输出是否与我的相符。 好吧,该计划是关于复合兴趣的: 我必须创建一些东西,给定一定的债务、利息和不支付的年数,每年都会打印出累积的债务。
一切都很好,直到我得到 850.85 的值,而它应该是 850.86。 这真的很烦人,因为由于这一轮错误,代码被检查为错误,我将得到 0。 你能帮我找出问题所在吗?
ValorInicial=float(input())#inicial debt
Juro=(int(input()))#interest on a scale 1 to 100
AnosNãoPagos=int(input())#years without paying
Taxa=(Juro/100)
print("Crescimento da divida ao longo de",AnosNãoPagos,"anos:")
print(ValorInicial)
while AnosNãoPagos!=0:
ValorInicial=ValorInicial+ValorInicial*Taxa
AnosNãoPagos=AnosNãoPagos-1
value=round((ValorInicial),2)
print(value)
【问题讨论】:
-
财务计算问题应具有指定的精确舍入规则。否则,对结果进行评分可能是不公平的。也许您应该将
ValorInicial舍入到未知数量的位置。也许您应该使用银行家的“四舍五入”。也许预期值是使用与您不同的 Python 版本计算的。 (回合在 3.0 中有所改变。)也许你不应该更新 Valor Inicial,而是使用 `Valor = ValorInicial * (1 + Taxa) **。这里的重点是实数等价的表达式在浮点上不等价。 -
在可能的情况下,您应该与讲师讨论需要过度精确答案的未指定问题。
-
我会的。我使用了python 3.6。我仍然是初学者,所以我可能会犯一些我不知道的错误,但感谢您的建议。
标签: python error-handling rounding smallcheck