15.9 怎样测试 IEEE NaN 以及其它特殊值?

许多实现高质量 IEEE 浮点的系统会提供简洁的工具去处理这些特殊值。例如, 在 <math.h> 以非标准扩展功能, 或可能以  <ieee.h> 或  <nan.h> 提供预定义常数, 及象  isnan() 这类的函数。这些工具的 标准化进程正在进行中。 一个粗陋但通常有效的测试 NaN 的方法:
	#define isnan(x)    ((x) != (x))
虽然一些不支持 IEEE 的编译器可能会把这个判断优化掉。

C99 提供 isnan(), fpclassify() 及其它一些类别的例程。

必要时, 还可以用 sprintf() 格式化需测试的值, 在许多系统上, 它会 产生 ``NaN" 或 ``Inf" 的字符串。你就可以比较了。

参见问题 19.38

参考资料: [C9X, Sec. 7.7.3]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)