partDéc() qui renvoie 1
13 posts
• Page 2 of 2 • 1, 2
Re: partDéc() qui renvoie 1
Je ne comprends pas bien, mettre K^(1/3) dans une variable ? C'est ce que j'ai fais dès le début (voir le code dans le premier message), sans succès
-
iequa
Niveau 2: MI2 (Membre Initié)- Posts: 3
- Joined: 29 Apr 2014, 14:08
- Gender:
- Calculator(s):→ MyCalcs profile
Re: partDéc() qui renvoie 1
C'est malheureusement un "bug" impossible à supprimer.
En effet, cela vient directement de la façon de stocker des réels.
Ici, après le calcul (approché) de 64^(1/3), c'est un nombre très proche de 4, mais légèrement inférieur, qui est obtenu. (En fait, ce sera le cas pour toutes les valeurs suivantes : (n^3)^(1/3) renvoie toujours une valeur très légèrement plus petite que n...)
Sa partie fractionnaire vaut donc 0.9999999999999.. avec plein de 9, mais la calculatrice n'affiche pas tous les chiffres qu'elle a en mémoire, donc elle affiche une valeur proche, à savoir 1.
C'est même plus qu'un problème d'affichage puisque l'on ne peut pas faire des calculs avec ces nombres impossibles à afficher :
Pourtant
et
On peut en déduire que les calculettes z80 effectuent les calculs sur 40 bits de mantisse.
Enfin, pour résoudre le problème, il suffit de ne pas tester l'égalité à 0 ! On peut le contourner ainsi :
On teste en fait si la partie décimale est très proche de 0 ou bien très proche de 1...
En effet, cela vient directement de la façon de stocker des réels.
Ici, après le calcul (approché) de 64^(1/3), c'est un nombre très proche de 4, mais légèrement inférieur, qui est obtenu. (En fait, ce sera le cas pour toutes les valeurs suivantes : (n^3)^(1/3) renvoie toujours une valeur très légèrement plus petite que n...)
Sa partie fractionnaire vaut donc 0.9999999999999.. avec plein de 9, mais la calculatrice n'affiche pas tous les chiffres qu'elle a en mémoire, donc elle affiche une valeur proche, à savoir 1.
C'est même plus qu'un problème d'affichage puisque l'on ne peut pas faire des calculs avec ces nombres impossibles à afficher :
- Code: Select all
1-2^(-40)-1
Pourtant
- Code: Select all
fPart(1-2^-40)
et
- Code: Select all
1-2^(-40)-1/2-1/2
On peut en déduire que les calculettes z80 effectuent les calculs sur 40 bits de mantisse.
Enfin, pour résoudre le problème, il suffit de ne pas tester l'égalité à 0 ! On peut le contourner ainsi :
- Code: Select all
Prompt K
K^(1/3)->R
If abs(partDéc(R)-partDéc(R)^2)<E-13
Then
Disp R
End
On teste en fait si la partie décimale est très proche de 0 ou bien très proche de 1...
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: partDéc() qui renvoie 1
Jolie analyse 

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)My calculator programs
Mes programmes pour calculatrices
-
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 14889
- Images: 1211
- Joined: 01 Jun 2007, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Twitter: adriweb
- GitHub: adriweb
13 posts
• Page 2 of 2 • 1, 2
Who is online
Users browsing this forum: No registered users and 6 guests