【问题标题】:Python always rounding down? [duplicate]Python总是四舍五入? [复制]
【发布时间】:2018-10-24 00:57:30
【问题描述】:

我正在尝试完成一项作业,并且非常接近 python 总是将我的答案向下舍入而不是在应该的时候向上舍入。 这是我的代码:

startingValue = int(input())
RATE = float(input()) /100
TARGET = int(input())
currentValue = startingValue
years = 1

print("Year 0:",'$%s'%(str(int(startingValue)).strip() ))

while years <= TARGET :
  interest = currentValue * RATE
  currentValue += interest
  print ("Year %s:"%(str(years)),'$%s'%(str(int(currentValue)).strip()))
  years += 1

这是我的代码输出的内容: 第 0 年:10000 美元, 第 1 年:10500 美元, 第 2 年:11025 美元, 第 3 年:11576 美元, 第 4 年:12155 美元, 第 5 年:12762 美元, 第 6 年:13400 美元, 第 7 年:14071 美元, 第 8 年:14774 美元, 第 9 年:15513 美元,

这是应该输出的内容: 第 0 年:10000 美元, 第 1 年:10500 美元, 第 2 年:11025 美元, 第 3 年:11576 美元, 第 4 年:12155 美元, 第 5 年:12763 美元, 第 6 年:13401 美元, 第 7 年:14071 美元, 第 8 年:14775 美元, 第 9 年:15514 美元,

我需要它们匹配,也就是四舍五入。有人请帮助我:(

【问题讨论】:

  • Python 的 int 默认向下舍入。听起来您需要四舍五入到最接近的整数:stackoverflow.com/questions/31818050/…
  • 是否需要四舍五入或四舍五入到最接近的整数?
  • 要始终向上取整,请使用math.ceil
  • 如果你在谷歌上搜索“Python rounding”这个短语,你会发现教程比我们在此处的答案中解释得更好。
  • 我需要他们四舍五入到最近的

标签: python while-loop rounding-error rounding


【解决方案1】:

在 Python 中,int() 构造函数将始终向下舍入,例如

>>> int(1.7)
1

https://docs.python.org/2/library/functions.html#int

如果 x 是浮点数,则转换截断为零。

如果你想总是四舍五入,你需要:

>>> import math
>>> int(math.ceil(1.7))
2

或四舍五入到最接近:

>>> int(round(1.7))
2
>>> int(round(1.3))
1

(见https://docs.python.org/2/library/functions.html#round ...这个内置函数返回一个浮点数)

【讨论】:

    【解决方案2】:

    投射到int 总是截断;想象一下它会去掉所有的小数点。

    使用round() 舍入到最接近的整数。

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      相关资源
      最近更新 更多