NaNを除けば浮動小数点数値は順序づけられており、小さいものから大きいものへと並べると次のようになる。
 負の無限大<負のゼロの有限数値<正と負のゼロ<正の非ゼロの有限数<正の無限大

正のゼロと負のゼロを比較した場合、等しいものと判定される。つまり、
 0.0 == -0.0
の結果はtrueとなる。また、
 0.0 > -0.0
はfalseとなる。
しかし、その他の演算では正のゼロと負のゼロを区別することができる。
 1.0 / 0.0 は正の無限大となる
 1.0 / -0.0 は負の無限大となる

NaNは順序づけられていないため、数値比較演算子(<,<=,>,>=)は、オペランドのいずれかまたは双方がNaNである場合にfalseを返す。
等値演算子==は、いずれかのオペランドがNaNである場合にfalseを返し、非等値演算子!=は、いずれかのオペランドがNaNである場合にtrueを返す。
x != x はxがNaNの場合にのみtrueとなり、(x < y) == !(x >= y) は、xあるいはyがNaNである場合にfalseとなる。

投稿者 java

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です