【发布时间】:2010-11-05 10:05:06
【问题描述】:
对于因非数学原因未定义的值使用 IEEE754 浮点 NaN(非数字)是否是个好主意?
在我们的例子中,它们尚未设置,因为尚未从其他设备接收到这些值。上下文是使用 IEC1131 REAL32 值的嵌入式系统。 编辑: 编程语言是 C,所以我们很可能会使用来自 C99 的 NAN 和 isnanf(x)。虽然我们可能需要一些额外的扭曲才能将它们纳入我们的操作系统兼容层。
编程语言的默认设置似乎是用正零初始化浮点变量,其内部表示全为零。这对我们来说是不可用的,因为 0 在有效值的范围内。
使用 NaN 似乎是一个干净的解决方案,但也许它比它的价值更麻烦,我们应该选择其他值吗?
【问题讨论】:
-
我不懂 C,但是在 .NET 1.1 在可空类型出现之前,很多人习惯使用最小值(int.MinValue)之类的东西。这样做的问题是您必须在任何地方都考虑它并确保您从不使用 MinValue。也许 C 语言中存在类似的东西?
-
我问了一个类似(但不相同)的问题,也许答案也可以帮助你。 *.com/questions/787828/nan-as-a-special-argument
标签: c floating-point initialization undefined nan