NaN POSITIVE_INFINITY etc

       public static void main (String[] args) {
	    float a = Float.POSITIVE_INFINITY;
	    double b = Double.POSITIVE_INFINITY;
	    double c = Double.NaN;

	    System.out.println(c == c);
	    System.out.println((a == b)+","+(c == c)+","+(c != c));
	}

Srs,
A resposta para esta questão é true, false, true.

Porque c == C = false ? Como o Java faz essa verificação ? ele compara o endereço de memória ?
Eu queria entender também o que é o POSITIVE_INFINITY e NEGATIVE_INFINITY

Isso não deve cair na prova, mas de qualquer maneira:
NaN é uma coisa que não é um número (Not-A-Number).
Ele é mais ou menos como se fosse o NULL do SQL.
Como você deve saber, NULL em SQL quer dizer “não temos dados suficientes” ou “não sabemos” ou “não disponível” ou “desconhecido”.
Portanto, em SQL, NULL = NULL é false porque você não sabe se uma coisa desconhecida é igual a outra coisa desconhecida.
Da mesma maneira, NaN quer dizer “é uma coisa que não é um número e que é resultado de uma operação indefinida”.
Portanto não pode ser usada para comparações, e então NaN == NaN é sempre false.

No caso de POSITIVE_INFINITY e NEGATIVE_INFINITY: a fortuna do Bill Gates se aproxima de POSITIVE_INFINITY porque se você imaginar um número positivo qualquer, POSITIVE_INFINITY é maior que esse número.
O rombo que você deixa no seu cheque especial, perto do dia do pagamento, se aproxima de NEGATIVE_INFINITY porque se você imaginar um número negativo qualquer, NEGATIVE_INFINITY é menor que esse número.

1 curtida

[quote=thingol]Isso não deve cair na prova, mas de qualquer maneira:
NaN é uma coisa que não é um número (Not-A-Number).
Ele é mais ou menos como se fosse o NULL do SQL.
Como você deve saber, NULL em SQL quer dizer “não temos dados suficientes” ou “não sabemos” ou “não disponível” ou “desconhecido”.
Portanto, em SQL, NULL = NULL é false porque você não sabe se uma coisa desconhecida é igual a outra coisa desconhecida.
Da mesma maneira, NaN quer dizer “é uma coisa que não é um número e que é resultado de uma operação indefinida”.
Portanto não pode ser usada para comparações, e então NaN == NaN é sempre false.

No caso de POSITIVE_INFINITY e NEGATIVE_INFINITY: a fortuna do Bill Gates se aproxima de POSITIVE_INFINITY porque se você imaginar um número positivo qualquer, POSITIVE_INFINITY é maior que esse número.
O rombo que você deixa no seu cheque especial, perto do dia do pagamento, se aproxima de NEGATIVE_INFINITY porque se você imaginar um número negativo qualquer, NEGATIVE_INFINITY é menor que esse número.
[/quote]
Incrível… me identifico muito com a do cheque especial. :lol:

Sobre o Nan, resumindo Nan não é igual a nada, nunca.