【发布时间】:2012-03-17 16:57:17
【问题描述】:
目前,我正在传输一个非规格化浮点数 = 0x00300000。在为另一个变量设置此值之前,先进行不等式 (var != var) 检查,即检查 NaN。非规范化数的不等式检查失败,该数被检测为 NaN。
你能告诉我我在这里做错了什么吗?我的代码在 C 中。
谢谢。
【问题讨论】:
-
我不确定我是否喜欢“非规范化浮点数 = 0x00300000”...您绝对确定浮点变量具有该位模式作为值?如果你 printf 会发生什么?
-
向我们展示您的代码。 (var != var) 评估和 NaN 通常不会在 C 代码中看到。 Javascript 是的,但我对你在 C 中所做的事情感到困惑。所以向我们展示你的代码。
-
你能给我一个十六进制的非规范化数字吗?如果我没有有效的非规范化数字,我将尝试相同的方法并查看发生了什么。 @Mysticial:它与显示给我的数字相同,但未通过不等式检查。和编译器设置有关系吗?
-
我想非规范化的浮点数会破坏数学运算的算法,因为这些算法假设操作数是规范化的。 (通过算法 - 我是指 ALU 中的硬件)
-
你的编译器和平台是什么,你如何编译(即用什么选项)?
标签: c floating-point nan