Python中实现任意精度舍入的有效方法

2024-05-20 10:45:45 发布

您现在位置:Python中文网/ 问答频道 /正文

什么是Python解决以下问题的方法?在

我在读一个分辨率为0.5的温度传感器。我需要写它(它有一个可编程的恒温器输出),分辨率也是0.5。在

因此,我编写了这个函数(Python2.7),将作为输入的浮点值四舍五入到最接近的位置。5:

def point5res(number):
    decimals = number - int(number)
    roundnum = round(number, 0)
    return roundnum + .5 if .25 <= decimals < .75 else roundnum

print point5res (6.123)

print point5res(6.25)

print point5res(6.8)

工作正常,分别输出6.0、6.5和7.0。这正是我想要的。在

我对Python比较陌生。线

^{pr2}$

让我对it实现者垂涎欲滴。但它是Python吗?在

编辑:自从发帖以来,我对what is and isn't 'Pythonic'有了更多的了解。我的代码不是。Cmd的密码,下面是。谢谢您!在


Tags: 方法函数numberreturnifdef分辨率int
2条回答

如果你保持表达式简单,它们就被认为是Python式的,否则就很难读懂了。在

我会这样四舍五入到最接近的0.5:

round(number*2) / 2.0

或者更一般地说:

^{pr2}$
return 0.5 * divmod (number, 0.5) [0] if number >= 0 else -0.5 divmod (number, -0.5) [0]

不过,这看起来更好:

^{pr2}$

相关问题 更多 >