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
What are you doing? You are supposed to be reading this tiny ad!
the new thread boost feature brings a LOT of attention to your favorite threads
https://coderanch.com/t/674455/ThreadBoostfeature
