Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
PartDéc( je vais devenir fou!
Persalteas le 27/09/2010 à 20:52
Alors je vous explique mon problème:
Il est un programme dans lequel ma variable B=0.4.
Vous êtes surement d'accord que 1000B=400
Or j'ai une condition:
If PartDéc(1000B
patati patata
donc dans mon cas, la condition ne devrait pas se remplir car PartDéc(1000B)=0
et pourtant...
j'ai donc essayé d'écrire en dehors du programme 1000B.
et là, stupeur, je vois écrit non pas 400, mais 399.
donc quand j'écris PartDéc(1000*0.4 j'ai bien 0, mais PartDéc(1000B, j'ai 0.99999.
et pourtant, quand je fais juste B, j'ai 0.4 et pas 0.399999.
Qu'est-ce qui se passe??!!
je précise que je suis en mode flottant.Sangohan38 le 27/09/2010 à 23:04
Ton B ne doit pas à la base être égal à 0.4 car j'ai testé la partie du prog et rien à signalé que ce soit E3 où 1000.
Sangohan38Rézus le 28/09/2010 à 00:20
Moi aussi il me l'avait fait dans DESERT2,j'avais résolu le problème en rajoutant 0.001 à B.Finalement je me suis rendu compte que c'était une histoire de partEnt Qui arrondit à défaut,et comme il était dans un partDéc,la partie décimale était pas nulle

un truc dans ce genre,cherches dans ton programme à partir de quel moment B passe de 0.4 à 0.39999999999,et tu trouveras sans doute ce qui pose problème.
Persalteas le 29/09/2010 à 16:02
c'est justement ce moment là que j'arrive pas a détecter, et je comprends pas pourquoi quand je tape B il m'affiche 0.4 et non pas 0.39999999.
pourtant la calto sait faire.
de toutes façons j'ai réglé le problème avec un arrondi(1000B,1.
mais ça m'énèrve quand même!linkakro le 29/09/2010 à 19:07
Je suppose que ton nombre a moins de 10 chiffres significatifs ?
Sinon c'est un problème d'affichage.
Quant au problême de calcul je ne vois pas.Sangohan38 le 29/09/2010 à 20:32
Comme le dit Rézus, ça doit venir d'un arrondi( antérieur que tu as du oublier de sauvegarder ou alors c'est dans l'algorithme (et non algorythme au passage

) qui fait les arrondis (sans doute une limite vers l'entier supérieur et du coup une valeur égale à 3.999999).
Sangohan38
Rézus le 29/09/2010 à 20:40
Ouais,faut que tu fasses gaffe et que tu testes les lignes quasiment unes par unes.Justement tiens c'était en faisant le jeu d'échec pour le concours que ça m'avait fait ce coup,et si tu fais pas ligne par ligne,tu peux pas trouver,au départ je croyais même que la valeur changeait quand le programme passait à un autre Lbl.Persalteas le 30/09/2010 à 19:29
chaque ligne est vérifiée, vous pouvez le faire vous même, c'est le programme "pi" dans la catégorie Ti 82 stats.fr je crois.
mon B est invariablement égal à 0.4.linkakro le 02/10/2010 à 14:09
Je commence à douter. Verrifie le nombre de chiffres.
ipart(B*10^7
fpart(B*10^7Persalteas le 03/10/2010 à 12:29
fpart(B*10^7=0.9999999
ipart(B*10^7=3999999
précisément.linkakro le 03/10/2010 à 16:35
Ce résultat est la preuve que ton nombre ne fait pas 0.4, mais 0.4-10^-14.
Tu dois pratiquer tes tests classiques partout, mais avec les deux formules que je t'ai donné pour connaître les valeurs exactes de B. Car les tests classiques affichent des résultats approchés à 10^-9 parmi les chiffres significatifs. (ici 10^-10)
Edit: j'ai corrigé des valeurs aberrantesPersalteas le 04/10/2010 à 20:50
bon ok. Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.