Usar Double.isNaN() para Verificação
Nesta etapa, aprenderemos como verificar se um número de ponto flutuante é "Not a Number" (NaN) em Java usando o método Double.isNaN().
Números de ponto flutuante em computadores podem, às vezes, resultar em um valor especial chamado NaN. Isso acontece quando o resultado de um cálculo é indefinido ou não pode ser representado como um número padrão. Por exemplo, dividir zero por zero ou tirar a raiz quadrada de um número negativo pode resultar em NaN.
É importante ser capaz de detectar valores NaN em seus programas porque eles se comportam de forma diferente dos números regulares. Por exemplo, comparar um valor NaN com qualquer outro número (mesmo outro NaN) usando operadores de comparação padrão (==, <, >) sempre resultará em false.
Java fornece um método específico para verificar NaN: Double.isNaN(). Este método recebe um valor double como entrada e retorna true se o valor for NaN, e false caso contrário.
Vamos criar um programa Java simples para demonstrar como usar Double.isNaN().
-
Abra o arquivo HelloJava.java no editor WebIDE.
-
Substitua o código existente pelo seguinte:
public class CheckNaN {
public static void main(String[] args) {
double result1 = 0.0 / 0.0; // This will result in NaN
double result2 = 10.0 / 2.0; // This is a regular number
System.out.println("Is result1 NaN? " + Double.isNaN(result1));
System.out.println("Is result2 NaN? " + Double.isNaN(result2));
}
}
Neste código:
- Declaramos duas variáveis
double, result1 e result2.
result1 recebe o resultado de 0.0 / 0.0, que é uma forma indeterminada e produzirá NaN.
result2 recebe o resultado de 10.0 / 2.0, que é um número padrão (5.0).
- Em seguida, usamos
Double.isNaN() para verificar se result1 e result2 são NaN e imprimimos os resultados.
-
Salve o arquivo (Ctrl+S ou Cmd+S).
-
Agora, precisamos compilar este novo programa. Como mudamos o nome da classe para CheckNaN, precisamos compilar CheckNaN.java. Abra o Terminal e execute:
javac CheckNaN.java
Se a compilação for bem-sucedida, você não deverá ver nenhuma saída.
-
Finalmente, execute o programa compilado:
java CheckNaN
Você deverá ver uma saída semelhante a esta:
Is result1 NaN? true
Is result2 NaN? false
Esta saída confirma que Double.isNaN() identificou corretamente result1 como NaN e result2 como um número regular.
Usar Double.isNaN() é a maneira correta e confiável de verificar valores NaN em Java. Confiar na comparação direta (== Double.NaN) não é recomendado porque, como mencionado anteriormente, NaN == NaN avalia como false.