nan ?

nan ?

by Mohamed Essayouti -
Number of replies: 6

Bonjour, 

au moment de la simulation de l'exerciceP9b, nous avons, à partir de 0.01 sec, "nan" sur toutes les composantes de nos vecteurs. Est-ce normal ou bien avons-nous fait des erreurs ?

Nous pensons que c'est notre fonction "f" qui fait ça, mais nous nous sommes référé au complément mathématique, donc les calculs ne devrait (en principe) pas poser de problème. Nous avons également essayé de réduire le copier-coller au maximum afin "d'alléger" nos calculs mais ça ne marche pas non plus.


Merci d'avance

In reply to Mohamed Essayouti

nan ?

by Diego Siméon Pierrot Dorn -
Nan signifie "Not a number", c'est un `double` particulier que tu obtient lors d'une division par zéro ou la multiplication de nombres trop grands par exemple.

Essaye de voir où tu peux avoir de tels opération à l'aide de nombreux affichages ou de gdb.
In reply to Mohamed Essayouti

Re: nan ?

by Josué Antoine Maechling -

Non ce n'est évidemment pas normal (en tout cas pas voulu évidemment).

Vous avez probablement fait des erreurs, à un moment vous devez diviser par 0 pour obtenir un nombre infini (par exemple)

Faites toujours attention avec les nombres décimaux dans vos calculs, il arrive d'oublier les "." quand on veut juste écrire "1." par exemple. Sinon n'hésitez pas à mettre des cout partout où vous faites vos calculs pour déboguer et savoir quel nombre devient trop grand (et uniquement déboguer ! on ne veut pas en avoir dans le final)

In reply to Josué Antoine Maechling

Re: nan ?

by Mohamed Essayouti -
est-ce qu'en C++ "(1/4)" est considéré comme "0" ? 

Car j'ai une expression on va dire du type : a = (1/4) * a; 

Il faudrait mettre a = a/4; ?
In reply to Mohamed Essayouti

Re: nan ?

by Josué Antoine Maechling -

effectivement, 1/4 va donner la partie entière de 1./4. ce qui est 0.

Tu peux écrire (1./4.)*a ou a/4 ou a/4.

Je recommande quand même d'écrire le . rien que pour prendre l'habitude de le faire.

(tout ça a été vu avec le professeur au premier semestre il me semble;) )

In reply to Josué Antoine Maechling

Re: nan ?

by Diego Siméon Pierrot Dorn -
Je recommande même d'écrire toujours 4.0 dès lors que l'on travaille avec des nombres flottants, même si 4. est plus court et même si 4 suffit parce que le reste de l'expression est déjà un double. C'est une bonne pratique qui ne coûte pas grand chose (juste deux caractères mais bon), qui augmente la lisibilité (c'est plus difficile de différentier 4 et 4.) et qui permet d'éviter les problèmes comme ceux que tu as eu