python - 如何在 python 中四舍五入到更高的 10 位

标签 python math

我有一堆 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/

相关文章:

python - 内存错误消息,因为字符串在 Python 中为空

python - 如何使用 wx.displaySize() 查找两台显示器的屏幕尺寸

java - Math.round(msgBody.length()/160 + 0.5) 计算不正确?

python - 我怎样才能改进这个方程,使负面投票多于正面投票的项目返回更有用的威尔逊分数

math - 将坐标转换为旋转坐标系

math - 在我的汇编程序中,我试图计算(((((2 ^ 0 + 2 ^ 1)* 2 ^ 2)+ 2 ^ 3)* 2 ^ 4)+ 2 ^ 5)的等式

python - 将多个正则表达式合并为一个 RE

python - 如何在 Python Peewee ORM 中选择二阶 ForeignKeyField 的位置?

python - 添加不属于模型的自定义表单字段 (Django)

javascript - Javascript 中奇怪的划分