[quote=GiancarloBraga]Creio que -0 seja uma ‘formalidade’. Porque como um professor me disse uma vez: não há zero negativo nem positivo! Há um zero apenas.
Então -0 é igual a 0 ou +0 porque matematicamente só há um zero, que não é nem positivo nem negativo. O zero é ‘neutro’.[/quote]
Hum, mas Java não trabalha com números “matemáticos”, e sim com números de ponto flutuante. Com números de ponto flutuante, é possível definir 3 números:
NaN - algo que não é um número (exemplo: divisão de 0 por 0).
INFINITY e -INFINITY - o resultado da divisão por zero
Para a maior parte das coisas, 0.0 == -0.0. Mas há um caso em que 0.0 e -0.0 dão resultados diferentes:
class ZeroZero {
public static void main(String[] args) {
// Isto prova que o Java sabe a diferença entre +0.0 e -0.0,
// mas só a usa quando estritamente necessário.
double z1 = 0.0;
double z2 = -0.0;
System.out.println (z1 == z2); // true como esperado
System.out.println (1.0 / z1); // Imprime +Infinity
System.out.println (1.0 / z2); // Imprime -Infinity - isso prova que existe "-0.0"
}
}