PartDéc( je vais devenir fou! |
Auteur |
Message |
Persalteas
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Lun 27 Sep 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
Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Lun 27 Sep 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.
Sangohan38
|
|
|
|
Rézus
Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
|
Posté le : Mar 28 Sep 2010, 0: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
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Mer 29 Sep 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
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mer 29 Sep 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.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
|
|
|
Sangohan38
Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Mer 29 Sep 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
Autorisation : Membre
Nb de messages : 853
Inscrit le : Sam 20 Jui 2009, 20:35
|
Posté le : Mer 29 Sep 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
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Jeu 30 Sep 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
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 02 Oct 2010, 14:09
|
|
|
Je commence à douter. Verrifie le nombre de chiffres.
ipart(B*10^7
fpart(B*10^7
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
|
|
|
Persalteas
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Dim 03 Oct 2010, 12:29
|
|
|
fpart(B*10^7=0.9999999
ipart(B*10^7=3999999
précisément.
|
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Dim 03 Oct 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 aberrantes
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
|
|
|
Persalteas
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Lun 04 Oct 2010, 20:50
|
|
|
bon ok.
|
|
|
|