PROG Qui bug !

Résolu/Fermé
musicetcie Messages postés 391 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 24 mars 2013 - 9 févr. 2010 à 19:36
musicetcie Messages postés 391 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 24 mars 2013 - 10 févr. 2010 à 17:43
Bonjour,
Je n'ai pas encore beaucoup d'expérience en matière de programmation, mais je progresse...
Pour cela, rien de tel que de s'entraîner, n'est-ce pas?
C'est pour ça que j'ai voulu créer un petit programme, bidon (mais alors très bidon ! xP), mais un programme quand même.
Son but : faire que la calculatrice affiche un peu plus de décimales qu'à la normale.
J'ai une TI-84.
Si j'entre pi, par exemple, elle m'affiche le nombre avec 9 décimales. Le programme en affiche 4 de plus.
Seulement, l'anté-antépénultième décimale est fausse. (exemple : avec 13 décimales : pi=3,1415926535898, et la calto m'affiche 3,1415926536898)
Pourquoi???

Merci

4 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
9 févr. 2010 à 20:02
Bonjour,

pour répondre à ta question, il faudrait déjà savoir quel est ton programme (comment tu fais quoi).

Ensuite, sache que la représentation des nombres à virgule dans un ordinateur est une approximation (à la manière de l'écriture scientifique avec un certain nombre de chiffres significatifs) il se peut que le bug vienne de là. Par contre le fait que seul ce chiffre-là soit faux, pour tous les cas de figure, m'amène à deviner que c'est dans ton code qu'il doit y avoir un bug effectivement.
0
musicetcie Messages postés 391 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 24 mars 2013 97
9 févr. 2010 à 20:27
En effet, il me semble que cela vienne du programme.
Je l'écris ici:

:Input "Nombre : ",A
:EffEcr
:Output(1,1,"Nombre:"
:Output(2,1,partEnt(A)
:1000partDec(A)->B
:1000partDec(B)->C
:Output(2,10,partDec(C)
:Output(2,4,partDec(A)
:Output(2,4,","

J'avais inséré "Fix 6" après :Output(2,10,partDec(C), mais cela ne fonctionnait que pour quelques nombres...
Que faire ?? :)
Merci
0
musicetcie Messages postés 391 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 24 mars 2013 97
10 févr. 2010 à 15:19
Aussi : j'ai testé avec des arrondi avant et après partDec, mais ce n'est pas une fonction que je maitrise, alors... Je ne sais pas du tout si j'étais sur la bonne voie.
Qu'en pensez vous?
0
musicetcie Messages postés 391 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 24 mars 2013 97
10 févr. 2010 à 17:43
En fait, je viens de réussir.
Une petite intuition (venue je ne sais d'où) m'a fait écrire partDec(A)=partEnt(1E8 * partDec(A))...
Au lieu de mettre une virgule et d'arrondir la dernière décimale, cette fois il me donne la décimale correcte...

L'erreur venait donc d'un arrondi... J'étais sur la bonne piste avec mon arrondi, mais ce n'était pas ça exactement...

Maintenant, si quelqu'un a une idée pour l'améliorer, je suis preneuse !!
0