我有一堆 float ,我想将它们四舍五入到下一个最高的 10 倍数。
例如:
10.2 should be 20
10.0 should be 10
16.7 should be 20
94.9 should be 100
我只需要它在 0-100 范围内。我试过 math.ceil() 但这只会四舍五入到最接近的整数。
提前致谢。
最佳答案
from math import ceil
def ceil_to_tens(x):
return int(ceil(x / 10.0)) * 10
编辑:好吧,既然我对这个答案有一个不当的“好答案”徽章,我认为应该使用 decimal
模块为社区提供一个合适的解决方案不会遇到这些问题 :) 感谢 Jeff 指出这一点。因此,使用 decimal
的解决方案如下:
from decimal import Decimal, ROUND_UP
def ceil_to_tens_decimal(x):
return (Decimal(x) / 10).quantize(1, rounding=ROUND_UP) * 10
当然,上面的代码要求 x
是一个整数、一个字符串或一个 Decimal
对象 - float 不会起作用,因为那样会破坏使用的全部目的decimal
模块。
遗憾的是 Decimal.quantize
不能正确处理大于 1 的数字,它本来可以省去除法运算的技巧。
关于python - 如何在 python 中四舍五入到更高的 10 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3986996/