Math.abs(n):對int、long、float、double類型的數取絕對值java
其中 int 類型的數取值範圍是 -2^31——2^31-1(-2147483648 ~ 2147483647)eclipse
舉例:spa
1 System.out.println(Math.abs(-2147483647)); 2 //輸出結果:2147483647 3 4 System.out.println(Math.abs(-2147483648)); 5 //輸出結果:-2147483648
爲何會獲得這樣的結果呢?-2147483648沒有超過 int 的取值範圍,可是取絕對值後獲得的仍是負數?翻譯
查看了Math.abs()的註釋,看到了一段解釋:code
Note that if the argument is equal to the value of Integer.MIN_VALUE
, the most negative representable int
value, the result is that same value, which is negative.blog
(百度翻譯:請注意,若是參數等於integer.min_value的值(最負的可表示int值),則結果是相同的值,這是負值。)ip
原來對於這個方法,若是是-2147483648不會進行處理,獲得的仍是負數get