# abs() method of Math class

Shubhada Nandarshi

Ranch Hand

Posts: 59

posted 11 years ago

Hi friends;

We know the abs()method of Math class returns the absulute val of the num.

but if we try

class Test{

public static void main(String args[]){

System.out.println((Math.abs(Integer.MIN_VALUE)));

System.out.println((Math.abs(-2147483648)));

System.out.println((Math.abs(-4)));

}

}

gives an o/p as:

-2147483648

-2147483648

4

Why?

is it because, the no. is very big no. & abs() can't take such big no for operation?

We know the abs()method of Math class returns the absulute val of the num.

but if we try

class Test{

public static void main(String args[]){

System.out.println((Math.abs(Integer.MIN_VALUE)));

System.out.println((Math.abs(-2147483648)));

System.out.println((Math.abs(-4)));

}

}

gives an o/p as:

-2147483648

-2147483648

4

Why?

is it because, the no. is very big no. & abs() can't take such big no for operation?

Shubhada

Mishra Anshu

Ranch Hand

Posts: 224

posted 11 years ago

Integer.MAX_VALUE = 2147483647

Integer.MIN_VALUE = -2147483648

I think you are expecting abs(Integer.MIN_VALUE) = 2147483648, but that can't be represented as it exceeds the Integer's range.

So,the value is -2147483648 which you may verify

by printing

System.out.println(Integer.MAX_VALUE + 1);

Integer.MIN_VALUE = -2147483648

I think you are expecting abs(Integer.MIN_VALUE) = 2147483648, but that can't be represented as it exceeds the Integer's range.

So,the value is -2147483648 which you may verify

by printing

System.out.println(Integer.MAX_VALUE + 1);

"Ignorance is bliss"

Timmy Marks

Ranch Hand

Posts: 226

posted 11 years ago

Integer.MIN_VALUE is represented in binary as 10000000000000000000000000000000. Since this is a negative number, the absolute value will be -1 * the number - The twos complement is the ones complement plus one - The ones complement will be 01111111111111111111111111111111 and when we add 1 to it, we get 10000000000000000000000000000000 (which is Integer.MIN_VALUE again!), so the problem is not that abs() cannot handle such large numbers, the problem is that ints are 32 bits.

Shubhada Nandarshi

Ranch Hand

Posts: 59

It is sorta covered in the JavaRanch Style Guide. |