【问题标题】:Rounding 5 upwards in Python [duplicate]在 Python 中向上舍入 5 [重复]
【发布时间】:2016-08-14 18:44:18
【问题描述】:

在 Python 3.5 中,我看到以下舍入行为:

>>> round(7.55, 1)
7.5 # expected to round up to 7.6

>>> round(7.45, 1)
7.5 # this is fine

也许我的直觉是不正确的,但我预计7.55 中的5 的百分之几向上舍入到7.6。标准的 Python 3 行为与我的数据期望不符;我显然需要超出标准round 方法的东西来实现这个目标。有没有办法得到这种行为?

【问题讨论】:

  • 这绝对应该是精度的结果。
  • 我认为使用 numpy 的 round() 方法可以帮助你实现你想要的行为。鉴于这里人们给出的答案是正确的,这是 Python 默认轮函数中的预期行为。
  • 为什么关闭?这个问题不是重复的。我期待某些行为,而不是使用标准的 round 函数。我在问如何获得这种行为。
  • 重复的,但不是链接问题;链接的问题完全是关于 Python 在中途情况下的行为,但您给出的数字是 not 中途情况(因为通常你看到的不是你得到的二进制浮点的性质)。

标签: python rounding


【解决方案1】:

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

注意对于浮点数的 round() 行为可能令人惊讶:例如,round(2.675, 2) 给出 2.67 而不是预期的 2.68。这不是错误:这是因为大多数小数部分不能完全表示为浮点数。有关详细信息,请参阅浮点算术:问题和限制。

【讨论】:

    【解决方案2】:

    除了精度问题之外,还要注意round 在这种情况下的偶数/奇数行为:

    对于支持 round() 的内置类型,值会四舍五入到最接近 10 的幂减去 ndigits 的倍数;如果两个倍数相等,则向偶数选择进行舍入(例如,round(0.5) 和 round(-0.5) 均为 0,round(1.5) 为 2)。如果使用一个参数调用,则返回值为整数,否则为与数字相同的类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多