首页 > 解决方案 > 在比较两个浮点值时为相同的代码获取不同的输出

问题描述

我在 python 中尝试过相同的代码,曾经作为.py文件运行并在 IDLE 中输入过一次,但它为相同的代码提供了不同的输出:

a = 3.4
b = 3.4
a is b

我附上了尝试两种方法时截取的屏幕截图:

标签: pythonpython-3.x

解决方案


左窗口返回 false 而右窗口返回 true 的原因是因为您键入的每个命令都是一个块,如手册中所述:

Python 程序是由代码块构成的。块是作为一个单元执行的一段 Python 程序文本。以下是块:模块、函数体和类定义。每个交互输入的命令都是一个块。

因此,当您使用控制台时,您键入的每个单独的命令都被视为一个块。每个块都有可重复使用的常量。在你的情况下 3.4 是一个常数。但是当您键入第二个命令时,它被认为是一个新块,因此它不会找到可以重用的常量。在使用 .py 文件的第二种情况下,常量被保存并重用,因为文件被视为单个代码块。

检查这一点的一种方法是在同一行声明两个变量,如下所示:

>>> a = 3.4; b = 3.4;
>>> print(a is b)

这将输出 True,因为您在同一命令中声明了两个变量,因此阻塞。

但是,如果您只想比较两个变量,则应使用==. 请记住,您正在进行浮点比较,请查看此 stackoverflow,了解如何最好地做到这一点:Python 中的浮点比较


推荐阅读