【发布时间】:2010-10-08 00:58:43
【问题描述】:
我正在编写通过 Windows 中的 COM 与 NI TestStand 4.2 交互的 Python 2.6 代码。我想为变量创建一个“NAN”值,但如果我将其传递给float('nan'),TestStand 会将其显示为IND。
显然,TestStand 区分浮点“IND”和“NAN”值。根据TestStand help:
-
IND对应于 Visual C++ 中的 Signaling NaN,而 -
NAN对应于 QuietNaN
这意味着 Python 的 float('nan') 在通过 COM 传递时实际上是 Signaling NaN。然而,从我读到的关于 Signaling NaN 的内容来看,似乎 Signaling NaN 有点“异国情调”,而 Quiet NaN 是你的“常规”NaN。所以我怀疑 Python 是否会通过 COM 传递 Signaling NaN。 我如何知道 Python float('nan') 是否作为 Signaling NaN 或 Quiet NaN 或 Indeterminate 通过 COM ?
在与其他语言交互时,有没有办法在 Python 中制作 Signaling NaN 与 QuietNaN 或 Indeterminate? (也许使用ctypes?)我认为这将是一个特定于平台的解决方案,在这种情况下我会接受。
更新:在 TestStand 序列编辑器中,我尝试创建两个变量,一个设置为NAN,另一个设置为IND。然后我把它保存到一个文件中。然后我打开文件并使用 Python 读取每个变量。在这两种情况下,Python 都将它们读取为 nan 浮点数。
【问题讨论】:
-
您究竟为什么要这样做?你可能把事情复杂化了。也许你可以使用 NoneType...
-
我想通过 COM 使用 Python 在 TestStand 中将变量设置为
NAN(而不是IND)。如果我们可以在整个系统中始终如一地使用NAN,那么最终用户的文档记录会更容易。
标签: python windows com interop nan