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