Blog

[java] Math.abs(Integer.MIN_VALUE) するとき

Java において Math.abs(Integer.MIN_VALUE)Integer.MIN_VALUE を返す。

MIN_VALUE が -2147483648 で MAX_VALUE が 2147483647 なので、まあそういうものです。

で、通常はそれで問題がないのだが、Math.abs(SecureRandom.getInstance("SHA1PRNG").nextInt()); とかやってると極めて稀にネガティブバリューになる可能性があるからやめろ!! って findbugs に言われたので、今後はしないようにしようと思います。

結果として、今回は心底どうでもいいところですが、テストコードの中だったので Math.abs((long)SecureRandom.getInstance("SHA1PRNG").nextInt()); としました。