ホームC言語用語集 ≫ NaN (Not-a-Number)

C言語用語集 - NaN (Not-a-Number)

NaN (Not-a-Number: 非数) とは,主に浮動小数点演算の結果が正常な結果でないことを表す特殊な表現形式です.

例えば asin 関数の引数に,区間 [-1, +1] 外の値を渡したり,sqrt 関数の引数に負の値を渡したりすると定義域エラー (domain error) が発生し,その結果として NaN が返されます.※

※ 処理系によっては NaN が生成されない場合があります.

NaN の性質

  1. NaN はどのような浮動小数点数と比較しても等しくならない.(NaNを含む)
  2. NaN を使った算術演算の結果は常に NaN になる.演算途中で NaN が発生した場合,それが伝播していく.(IEC 60559:1989)

qNaN (quiet NaN)

何も浮動小数点例外を生成することなく,ほとんどすべての算術演算を通して伝播する NaN.

sNaN (signaling NaN)

算術オペランドとして現れる場合,浮動小数点例外を発生する NaN.

関連関数