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)