Java, afficahage "NaN"

Fermé
mnr - 28 mars 2005 à 09:37
 Jon - 12 sept. 2013 à 20:39
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...
A voir également:

5 réponses

alconis Messages postés 42 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 28 mars 2005 27
28 mars 2005 à 15:20
NaN = "Not a Number".

Une trés rapide rcherche dans un moteur de recherche t'aurais permis de répondre seul à cette question.
8
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 ......
0
oui, c'est vrai pierre
0
je confirme
0
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.
0
AlconisEstStupide
7 oct. 2012 à 21:11
Moi aussi j'ai trouvé la réponse sur cette page. criss de cave!
0
Utilisateur anonyme
28 mars 2005 à 13:20
4
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.
3
Boulet moi aussi
8 déc. 2009 à 17:07
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KillerKlown Messages postés 47 Date d'inscription mardi 14 février 2012 Statut Membre Dernière intervention 8 mars 2012 12
23 févr. 2012 à 17:34
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.
0
Utilisateur anonyme
23 févr. 2012 à 19:20
On ne retourne pas Infinity dans ce cas ?
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
23 févr. 2012 à 19:35
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 !
0
KillerKlown Messages postés 47 Date d'inscription mardi 14 février 2012 Statut Membre Dernière intervention 8 mars 2012 12
24 févr. 2012 à 11:09
Ah oui j'avais pas vu que c'était 2005 :D
0