python - Python 中的 float 舍入

标签 python rounding

我有一个很大的 0 到 1 之间的 float 列表,如下所示:

l1 = [0,0.2,0.9,0.75,0.3,1,0.43,0.65]

我想要的是将这些 float 四舍五入为数字:

l2 = [0,0.25,0.5,0.75,1]

这里的结果是:

r = [0,0.25,1,0.75,0.5,1,0.5,0.75]

我的意思是对于 l1 中的每一项从l2中选择更接近它的项目并替换为后者。我可以使用一些 for 循环来实现这一点并进行详尽的检查,但我希望有一个更灵活的解决方案。

Python 中有一个库可以优雅地实现这一点吗?

最佳答案

如果l2始终为[0, 0.25, 0.5, 0.75, 1],您可以使用numpy:

r = np.round(4*np.array(l1))/4

输出:

array([0.  , 0.25, 1.  , 0.75, 0.25, 1.  , 0.5 , 0.75])

如果您只想向上舍入,请使用 numpy.ceil:

r = np.ceil(4*np.array(l1))/4

输出:

array([0.  , 0.25, 1.  , 0.75, 0.5 , 1.  , 0.5 , 0.75])

关于python - Python 中的 float 舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71916150/

相关文章:

c - 在 C 中手动实现舍入函数

floating-point - 为什么从 0.0-1.0 区间转换时需要将 RGB 值乘以 256 而不是 255?

python - 从字符串获取日期时间格式?

python - python中是否需要字符串初始化?

python - 如何在Python中导入png图像

java - 如何以可变精度进行 Java String.format?

javascript - 将数字四舍五入到最接近的小数点 0.5

javascript - 使用 toFixed(2) 和数学舍入获得正确的舍入

python - PySpark sampleBy 使用多列

python - 在表模型中设置列标题