gpt4 book ai didi

Python,if语句和float

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:54 32 4
gpt4 key购买 nike

我在 Python 中有一个函数可以读取 ds18b20 温度传感器。传感器在我读取它的时候大约有 5% 的时间给我一个错误值 (-0.062)。这不是问题,但我不想记录该值,因为它在我的图表中看起来很难看。

我无法设法“捕获”if 语句中的值以将其替换为“#error”。下面的代码运行良好,但似乎 if 语句有问题并且不起作用 - 它只是运行 else 下的所有内容。

我已经尝试了一切,甚至“捕获”了 1000 到 1500 之间的所有值(除以 1000 之前的当前温度读数)以检查它是否适用于任何温度,但它不起作用。

有谁知道为什么我的 if 语句不起作用?

 def readtwo():
tfile = open("/sys/bus/w1/devices/28-0000040de8fc/w1_slave")
text = tfile.read()
tfile.close()
secondline = text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperature = temperature / 1000
if temperature == -0.062:
return("#error")
else:
return(temperature)

最佳答案

测试以 10 为基数的 float 是否相等几乎总是错误的做法,因为它们几乎总是不能在二进制系统中精确表示。

从我看到的你的代码片段来看,你应该与字符串进行比较,如果不是可怕的 -0.062,则转换为 float :

def readtwo():
tfile = open("/sys/bus/w1/devices/28-0000040de8fc/w1_slave")
text = tfile.read()
tfile.close()
secondline = text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = temperaturedata[2:]
if temperature == '-0062':
return("#error")
else:
temperature = float(temperature) / 1000
return(temperature)

关于Python,if语句和float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14573849/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com