302 votes

Comment tester pour voir si un double est égal à NaN ?

J'ai un double en Java et je veux vérifier s'il est NaN . Quelle est la meilleure façon de procéder ?

1voto

Chris Arguin Points 6469

Consultez la Javadoc de l'outil Double API.

0voto

Teela Points 13

L'extrait de code ci-dessous permet d'évaluer le type primitif contenant NaN.

double dbl = Double.NaN; Double.valueOf(dbl).isNaN() ? true : false;

0voto

SingleShot Points 9258

Vous avez mentionné "test" dans la question. Voici comment je testerais avec JUnit 4.x :

import static org.junit.Assert.*;
import org.junit.*;

import static java.lang.Double.*;

public class DoubleNanTests {

    @Test
    public void blahBlahBlahShouldCreateAnInvalidValue() {
        double badDouble = NaN; // obtain double from unit under test
        assertTrue("result should be an invalid value, but isn't", isNaN(badDouble) );
    }
}

-1voto

Les débutants ont besoin d'exemples pratiques. Essayez donc le code suivant.

public class Not_a_Number {

public static void main(String[] args) {
    String message = "0.0/0.0 is NaN.\nsimilarly Math.sqrt(-1) is NaN.";        
    String dottedLine = "------------------------------------------------";     

    Double numerator = -2.0;
    Double denominator = -2.0;      
    while (denominator <= 1) {
        Double x = numerator/denominator;           
        Double y = new Double (x);
        boolean z = y.isNaN();
        System.out.println("y =  " + y);
        System.out.println("z =  " + z);
        if (z == true){
            System.out.println(message);                
        }
        else {
            System.out.println("Hi, everyone"); 
        }
        numerator = numerator + 1;
        denominator = denominator +1;
        System.out.println(dottedLine);         
    } // end of while

} // end of main

} // end of class

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X