【问题标题】:Round problem involving the calculation of compound interest in pythonpython中涉及复利计算的round问题
【发布时间】: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


【解决方案1】:

我看到的问题是分类群正在使用整数数学。为了修复它,将第二行更改为:

Juro=(float(input()))

【讨论】:

  • 在 python 3 中,Juro / 100 是一个浮点数。 Ana 需要指定自己和网站使用的 Python 版本。
猜你喜欢
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多