我在 python 程序中使用线程,最近发现了一个问题,即浮点数没有被正确解释,每当我在 pdb 或日志语句中打印它时,它大部分时间都正确显示。
奇怪的是,在我刚刚运行的这两个线程中显示的打印数量不同。前两次打印也使用相同的格式,但线程 1 中的值仍然会发生变化。
for x in imports:
if float(x.prob) == 0.0:
logging.debug(float(x.prob))
logging.debug(float(x.prob))
logging.debug(x.prob)
logging.debug(str(x.prob))
logging.debug(str(float(x.prob)))
import pdb; pdb.set_trace()
[DEBUG] (Thread-1 ) 0.0
[DEBUG] (Thread-1 ) 0.0592
[DEBUG] (Thread-1 ) 0.0592
[DEBUG] (Thread-1 ) 0.0592
[DEBUG] (Thread-1 ) 0.0592
[DEBUG] (Thread-2 ) 0.0
[DEBUG] (Thread-2 ) 0.0
[DEBUG] (Thread-2 ) 0
[DEBUG] (Thread-2 ) 0.0592
[DEBUG] (Thread-2 ) 0.0592
和
(Pdb) float(x.prob) == 0.0
False
原因是什么?我该怎么做才能第一次正确解释它?