Page 1 of 2

partDéc() qui renvoie 1

PostPosted: 29 Apr 2014, 15:29
by iequa
Bonjour,
Je code un petit programme qui prend en entrée un entier k, et qui renvoie sa racine cubique.
Si elle est entière, on l'affiche, sinon on donne un encadrement entre deux entiers.
Pour vérifier qu'un nombre est entier, je vérifie si sa partie décimale vaut 0 :

Code: Select all
Prompt K
K^(1/3)->R
If partDéc(R)=0
Then
Disp R
End

Ce tout début de programme me pose déjà problème ! Il marche avec 1 (1^3), 0 (0^3), -1 (-1^3), 8 (2^3), 27 (3^3)... et pas plus. Quand je mets 4^3=64, il ne me renvoie rien. Pareil pour 5, etc.
Donc je fais un petit test :

Code: Select all
Prompt K
K^(1/3)->R
Disp R

Et là... Si pour -1,0,1,8,27 il m'affiche bien 0, pour 64 et 125, il m'affiche 1. Une partie décimale de 1 ?
Pouvez m'aider à résoudre ce problème ?
Merci

Re: partDéc() qui renvoie 1

PostPosted: 29 Apr 2014, 15:34
by Adriweb
Hum, étrange....
Je n'ai pas ce problème là. (tu as quelle version ? As-tu essayé de redémarrer/reset ?)

Un autre test pour vérifier si un nombre est bien entier :
If nbr=Int(nbr) Then ... EndIf

Image

Re: partDéc() qui renvoie 1

PostPosted: 29 Apr 2014, 16:28
by Levak
A en juger le "Prompt" je suppose qu'il n'a pas de TI-Nspire et qu'il s'est trompé de catégorie ?

Re: partDéc() qui renvoie 1

PostPosted: 29 Apr 2014, 16:40
by Adriweb
Hum, bien vu... :D

En cas de bug, ma proposition reste cependant valable :

Image

Re: partDéc() qui renvoie 1

PostPosted: 29 Apr 2014, 17:53
by critor
Salut iequa.

En effet, je confirme le problème sur TI-83+ et TI-84:
Image Image

Habituellement, la plupart des erreurs de calculs sont dues au fait que la calculatrice travaille sur un nombre fini de chiffres (13), et que les résultats possiblement intermédiaires nécessitant un nombre infini de décimales comportent donc une erreur qui peut déclencher nombre d'incohérences dans les calculs ultérieurs.

Mais là, tu sembles nous poser une belle colle, au sens où je n'arrive pas à détecter d'erreur de calcul sur ta puissance fractionnaire, qui renvoie bien le nombre entier 4:
Image

Et pourtant, il semble bien y avoir une différence interne dans la mémoire de la machine avec l'entier 4:
Image


Bref, un joli mystère... ;)

Re: partDéc() qui renvoie 1

PostPosted: 29 Apr 2014, 18:02
by Adriweb
.... que je peux reporter à TI, d'ailleurs :)

Qui confirme ce comportement sur 84C ?

Re: partDéc() qui renvoie 1

PostPosted: 29 Apr 2014, 18:07
by critor
Ce serait quand même bien de le comprendre avant...

En passant, problème confirmé sur TI-84 Plus C:
Image

Re: partDéc() qui renvoie 1

PostPosted: 29 Apr 2014, 18:11
by Adriweb
C'est pas à nous de comprendre, c'est à eux de fixer :P

(et merci pour le test 84c)

Re: partDéc() qui renvoie 1

PostPosted: 29 Apr 2014, 18:26
by iequa
Merci d'avoir déplacé le sujet, excusez-moi :?

Je suis sur Ti-83+, et oui ce problème est bien mystérieux... A signaler également que ent(64^(1/3)), soit ent(4) donne... 3. Et pareil pour 5...
Si vous voyez un moyen de contourner ceci, je vous en serais reconnaissant.

Merci

Re: partDéc() qui renvoie 1

PostPosted: 29 Apr 2014, 18:28
by Adriweb
Pour contourner, tu peux mettre ton résultat dans une variable temporaire et ensuite faire le teste sur cette variable...