Python - 四舍五入到最近的十

ras*_*eme 36 python rounding

如果我得到数字46,我想要四舍五入到最近的十.我怎么能在python中做到这一点?

46到50.

ch3*_*3ka 92

round确实采取负面ndigits参数!

>>> round(46,-1)
50
Run Code Online (Sandbox Code Playgroud)

可以解决你的情况.

  • 尽管如此,这并不是**.它还返回一个`float`,这可能是也可能不是(但我认为值得一提). (4认同)
  • 是的,它在py3上舍入到最近的...但它返回一个int. (4认同)
  • 它很脏,但你总是可以`round(num + 5.1,-1)` (3认同)
  • 如果你不想要一个浮点数,你可以很容易地把它放在 int() 里面。谢谢。这解决了我的情况。 (2认同)
  • 最佳答案就在这里 (2认同)

Par*_*ker 52

您可以使用math.ceil()向上舍入,然后乘以10

import math

def roundup(x):
    return int(math.ceil(x / 10.0)) * 10
Run Code Online (Sandbox Code Playgroud)

要使用就行

>>roundup(45)
50
Run Code Online (Sandbox Code Playgroud)

  • 我认为那是因为你超出了 python int 限制 (3认同)

NPE*_*NPE 14

这是一种方法:

>>> n = 46
>>> (n + 9) // 10 * 10
50
Run Code Online (Sandbox Code Playgroud)

  • 好戏.归结为添加数字基数减1. (2认同)
  • 对于 0.5 或 30.5 等数字,这将失败(即 k*10+a 其中 k 是整数且 0 < a < 1 ) (2认同)
  • 是的,答案仅假定输入为整数-从问题中不清楚这是一个条件,尽管示例暗示情况确实如此 (2认同)

小智 7

这也将正确舍入:

>>> n = 46
>>> rem = n % 10
>>> if rem < 5:
...     n = int(n / 10) * 10
... else:
...     n = int((n + 10) / 10) * 10
...
>>> 50
Run Code Online (Sandbox Code Playgroud)

  • 它也有助于降低回合。谢谢 jvasilakes (5认同)
  • 要求特别是四舍五入*。 (4认同)