silence-x

Math.abs(n):对int、long、float、double类型的数取绝对值

其中 int 类型的数取值范围是 -2^31——2^31-1(-2147483648 ~ 2147483647)

举例:

1 System.out.println(Math.abs(-2147483647));
2 //输出结果:2147483647
3 
4 System.out.println(Math.abs(-2147483648));
5 //输出结果:-2147483648

为什么会得到这样的结果呢?-2147483648没有超过 int 的取值范围,但是取绝对值后得到的还是负数?

 

查看了Math.abs()的注释,看到了一段解释:

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.

(百度翻译:请注意,如果参数等于integer.min_value的值(最负的可表示int值),则结果是相同的值,这是负值。)

 

原来对于这个方法,如果是-2147483648不会进行处理,得到的还是负数

分类:

技术点:

相关文章:

  • 2021-06-17
  • 2022-12-23
  • 2022-12-23
  • 2021-06-13
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-10-20
  • 2021-11-27
  • 2022-12-23
  • 2021-11-01
  • 2021-09-23
  • 2021-07-16
  • 2022-12-23
相关资源
相似解决方案