O abs funciona pra todos os valores?

Bem, estou estudando pra SCJP e esta me aparecendo cada curiosidade que nunca imaginava existir no JAVA…

mais uma dessas seria !!!

System.out.println(Math.abs(Integer.MIN_VALUE)); e isso System.out.println(Math.abs(Float.MIN_VALUE)); e isso System.out.println(Math.abs(Double.MIN_VALUE));

tentem imprimir isso !

Sera que o abs funciona pra esse caso ???

Ola…

Esse metodo e o valor absoluto!!

Tp…

o modulo na matematica |z| = z, lembra ?? qualquer valor q vc colocar no modulo a resposta vai ver positiva!! :smiley:

Não sei o motivo, talvez um bug, mas o Math.abs não funciona para Integer.MIN_VALUE e Long.MIN_VALUE.

Galera,

Na verdade o método Math.abs() não retorna o valor positivo de Integer.MIN_VALUE, pois esse número positivo não cabe dentro de um número int mais, ele explode o tamanho máximo; a mesma coisa para o Long.MIN_VALUE

Dêem uma olhada:

Integer.MIN_VALUE=-2147483648
Integer.MAX_VALUE=2147483647

É o mesmo caso que fazer -Integer.MIN_VALUE ele continua sendo
-2147483648.

[quote=“ton_sp”]Galera,

Na verdade o método Math.abs() não retorna o valor positivo de Integer.MIN_VALUE, pois esse número positivo não cabe dentro de um número int mais, ele explode o tamanho máximo; a mesma coisa para o Long.MIN_VALUE

Dêem uma olhada:

Integer.MIN_VALUE=-2147483648
Integer.MAX_VALUE=2147483647

É o mesmo caso que fazer -Integer.MIN_VALUE ele continua sendo
-2147483648.[/quote]

Exatamente isso Ton.

Como o valor extrapola os limites do tipo quando há essa mudança para positivo, ele simplesmente NÃO TROCA!!!

Mais uma das curiosidades (pra quem não sabia) que o JAVA têm.

Não chega a ser um bug não Robson …pode não ser a melhor forma… mas sinceramente, eles poderiam muito bem lançar um exceção de Runtime…

Pois é Ratinho … nem tudo que a gente aprende no primário … vale na prática …