我使用 VBA 将字节数组中的 8 字节浮点数加载到 Double 中。有些数字将为 IEEE 754 NaN(即,如果您尝试使用 Debug.Print 打印它,您将看到 1.#QNAN)。我的问题是,如何测试 Double 中包含的数据是否是 NaN 而不是常规数字?
Thanks.
NaN 在指数中具有一种模式,您可以在它们仍在字节数组中时识别它们。具体来说,任何 NaN 都将具有全 1 的指数,任何 Infinity 也是如此,您可能也应该捕获它。
在 double 中,指数位于最高位两个字节中:
SEEEEEEE EEEEMMMM MMM....
假设它们是 b(0) 和 b(1):
Is_A_Nan = ((b(0) And &H7F) = &H7F) And ((b(1) And &HF0) = &HF0)
这是空中代码,但你明白了。
如果您需要区分 SNaN、QNaN 和 Infinity,您需要更深入地研究,但这听起来对您来说不是问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)