Java, afficahage "NaN"
mnr
-
Jon -
Jon -
bonjour...
je travaille avec java, j'ai un petit problème, si quelqu'un peut m'aider...
public void sinc(float center, float a){
for(int i=0; i<taille; i++){
double x = Math.PI*(i*pas-center);
valeurs[i] = (float)((a*Math.sin(x))/x);
temps[i] = i*pas + center-duree/2;
}
return;
}
parmi les valeurs obtenues après exécution j'ai trouvé NaN, je veux savoir qu'est ce que cela signifie et quel est le problème?
merci à tous...
je travaille avec java, j'ai un petit problème, si quelqu'un peut m'aider...
public void sinc(float center, float a){
for(int i=0; i<taille; i++){
double x = Math.PI*(i*pas-center);
valeurs[i] = (float)((a*Math.sin(x))/x);
temps[i] = i*pas + center-duree/2;
}
return;
}
parmi les valeurs obtenues après exécution j'ai trouvé NaN, je veux savoir qu'est ce que cela signifie et quel est le problème?
merci à tous...
A voir également:
- Java nan
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
5 réponses
NaN = "Not a Number".
Une trés rapide rcherche dans un moteur de recherche t'aurais permis de répondre seul à cette question.
Une trés rapide rcherche dans un moteur de recherche t'aurais permis de répondre seul à cette question.
pierre
J'adore les gens qui disent ça. Parce que c'est bien gentil les "regarde sur google" mais moi j'ai trouvé la réponse justement en trouvant cette page sur google. Les pages de forum, ça va ça vient, si ça te bouche le ... de répondre une phrase ba répond pas, mais écrit pas une plus grande phrase pour te plaindre d'avoir à répondre, c'est paradoxale ......
SIMPLE_USER
oui, c'est vrai pierre
b_khallou
je confirme
Anonyme
Moi aussi c'est grâce à cette page que je connais la réponse, et oui, les pages de forum, ça va, ça vient, mais en avril 2012 celle ci est toujours là, et je suppose que si elle n'y étais pas je serai tombée sur une autre avec la même réponse. Je suppose aussi qu'en 2005 c'était pareil.
AlconisEstStupide
Moi aussi j'ai trouvé la réponse sur cette page. criss de cave!
OUBLIONS CETTE RÉPONSE:
c'est bien la division par zéro qui retournant Infinity sans lever d'exception provoque bien l'affichage de NaN ( on traite des réels )
Avec des entiers on aurait bien:
Exception in thread "main" java.lang.ArithmeticException: / by zero
+1 à KillerKlown
Salut,
Tu utilises la constante PI qui est 3.141592653589793 alors que ta configuration refuse le point
Peut-être que ton problème non numérique vient de PI.
Quelle est ta locale ?
Tu devrais essayer de la modifier >> Locale.setDefault(new Locale("en", "US"));
ajouter éventuellement import java.util.Locale;
et relancer (mais je ne suis pas certain à 100%)
Cordialement,
Dan
Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
c'est bien la division par zéro qui retournant Infinity sans lever d'exception provoque bien l'affichage de NaN ( on traite des réels )
Avec des entiers on aurait bien:
Exception in thread "main" java.lang.ArithmeticException: / by zero
+1 à KillerKlown
Salut,
Tu utilises la constante PI qui est 3.141592653589793 alors que ta configuration refuse le point
Peut-être que ton problème non numérique vient de PI.
Quelle est ta locale ?
Tu devrais essayer de la modifier >> Locale.setDefault(new Locale("en", "US"));
ajouter éventuellement import java.util.Locale;
et relancer (mais je ne suis pas certain à 100%)
Cordialement,
Dan
Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
C'est pas la phrase qui est gaspillée, c'est le topic
T'as pensé à jeter un œil sur les conditions d'utilisation de CCM aka la charte ?
T'as pensé à jeter un œil sur les conditions d'utilisation de CCM aka la charte ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
for(int i=0; i<taille; i++)
{
double x = Math.PI*(i*pas-center);
valeurs[i] = (float)((a*Math.sin(x))/x);
temps[i] = i*pas + center-duree/2;
}
return;
}
En fait, lors de la première itération, i vaut 0 donc x vaudra 0 et ensuite tu fais une division par x soit 0 ce qui retourne immanquablement un NaN.
Si tu commences à i = 1, tu ne devrais jamais avoir le problème.
{
double x = Math.PI*(i*pas-center);
valeurs[i] = (float)((a*Math.sin(x))/x);
temps[i] = i*pas + center-duree/2;
}
return;
}
En fait, lors de la première itération, i vaut 0 donc x vaudra 0 et ensuite tu fais une division par x soit 0 ce qui retourne immanquablement un NaN.
Si tu commences à i = 1, tu ne devrais jamais avoir le problème.
Un nombre divisé par 0 peut dans certain cas valoir l'infini (positif ou négatif) mais également n'importe quelle autre valeur. Par exemple x/x va valoir 1 pour toutes les valeurs de x, sauf pour 0, mais il n'y a pas de raison pour autant qu'on dise qu'en 0 ça vaut l'infini... alors que c'est prolongeable en 1 !
De toute façon la division par 0 est interdite, elle ne renvoie pas NaN, mais une ArithmeticException...
PS : cette discussion date de 2005 !
De toute façon la division par 0 est interdite, elle ne renvoie pas NaN, mais une ArithmeticException...
PS : cette discussion date de 2005 !