タグ

signに関するtakanqのブックマーク (1)

  • 整数の絶対値は常に正の数になるとは限らない

    数値の絶対値を得たい場合、Math.absメソッドを使う方法と、自前で「負の数であれば符号を逆転する」方法がありますが、実はJavaでは「そのどちらを用いても」結果が必ず正の数になるとは限りません。 具体的には、int型およびlong型の最小値の絶対値を得ようとした場合で、下図のとおり、Math.absメソッドを用いても、符号を逆転しても、元の値が返ってきますので「絶対値を取ったはずが、負の数が返ってくる」となります。 これは、int型の最大値(2,147,483,647)が、最小値(-2,147,483,648)の絶対値よりも、1小さいことが原因であり、long型、short型、byte型の場合も同様です。 Javaではこのことへの対処として、例外を発生させたり、範囲外を示すビットパターンを返したりせずに、そのままの値を返すことを明文化しているわけです。 なお、実数においてはこの現象は起

    整数の絶対値は常に正の数になるとは限らない
  • 1