Gamme TI-82


Poster un nouveau sujet Poster une réponse
Étrangeté à élucider.
Auteur Message
Homer_Dalor



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 22 Avr 2017, 16:00
Posté le : Sam 17 Jui 2017, 3:42   Citer 

Bonjour à toutes et à tous.

Il y a de cela quelques minutes, je programmais tranquillement lorsqu'une erreur domaine étrange me parvint.
J'enquêtais donc sur le pourquoi du comment cet erreur était arrivé et ne trouvai point.
Je testais donc sans programme les calculs effectué, et j'ai remarqué une chose étrange. Voilà la partie qui pose problème :


Code
:Sous-chaîne("AAAAAAAAAAAAAA",1+13PartDéc(A/13),1



Vous remarquerez ici qu'il n'y a rien d'anormal à ce code.
Or si on le test avec un nombre au dessus de 13 et qui ne soit pas un multiple de 13, il y a une erreur.

Pour régler cela, je suis obligé d'ajouter un PartEnt comme ceci :


Code
:Sous-chaîne("AAAAAAAAAAAAAA",1+PartEnt(13PartDéc(A/13)),1



Est-ce normal ?
D'où peut bien provenir cette erreur ?
Voilà un mystère à éclaircir B|

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Mingerton



Autorisation : Membre
Nb de messages : 506
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Sam 17 Jui 2017, 16:34   Citer 

En effet c'est bizarre ça, l'expression que tu donnes n'est pourtant jamais nulle. Tu as vérifié que tu avais bien 14 fois A dans la chaîne ? C'est la seule autre erreur de domaine qui peut intervenir.

Mais le fait qu'une partie entière inutile en théorie règle le problème est d'autant plus bizarre. Peut être un bug ? Je ne sais pas si il a déjà été signalé.

----------------------
Mes articles
Mes programmes en ligne (je termine peu de projets)

Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN
 Adresse email Haut de page Bas de page 
 
Homer_Dalor



Autorisation : Membre
Nb de messages : 33
Inscrit le : Sam 22 Avr 2017, 16:00
Posté le : Sam 17 Jui 2017, 17:05   Citer 

Coucou, dans la ligne de code, j'ai mis des A par flemme de mettre autre chose, mais je t'assure avoir une erreur en étant sûr à 100% que ça devrait marcher, et j'ai tester avec une chaîne plus longue, ça en revient toujours à la même erreur, même si le résultat donne un nombre entier, la calculette à l'impression qu'il y a un chiffre après la virgule et que le résultat n'est pas un nombre entier.

Tu peux tester aussi en mettant par exemple


Code
L1(13PartDec(15/13))



Même si le résultat devrait donner L1(2), erreur dimension invalide.
Je ne pense pas que le problème ait été signalé, je n'ai rien trouver à ce sujet.

 Adresse email Haut de page Bas de page 
 
Mingerton



Autorisation : Membre
Nb de messages : 506
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Sam 17 Jui 2017, 17:26   Citer 

Ouais t'inquiète j'ai essayé ton code avec plusieurs chaînes moi aussi j'ai toujours cette erreur. Un petit problème avec la fonction fpart on dirait.

Sinon j'ai regardé d'autres codes utilisant ce type de fonction, apparemment c'est admis que le ipart est essentiel pour ne pas avoir d'erreur puisque tout le monde a l'air de le mettre sans se poser de questions. Le bug doit donc être connu depuis un bout de temps. Je vais fouiller un peu pour les raisons.

----------------------
Mes articles
Mes programmes en ligne (je termine peu de projets)

Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN
 Adresse email Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 855
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Sam 17 Jui 2017, 19:24   Citer 

Ce n'est pas un bug à proprement parler.

Petit exemple:
1254/13 = 96.461...
(1254/13-96)*13 = 6.00...
Mais
(1254/13-96)*13-6 = -6E-12

Ceci est du à des erreurs d'arrondis, les expressions sont sockées d'une certaine façon, ce qui fait perdre en précision.

Du coup N*fPart(A/N n'est pas toujours exactement un entier sur les calculatrice (et plus largement dès que tu fais des calculs approchés avec des logiciels.

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
Ruadh



Autorisation : Membre
Nb de messages : 30
Inscrit le : Ven 06 Nov 2015, 14:08
Posté le : Mer 19 Juil 2017, 19:56   Citer 


Citer : Mingerton
Ouais t'inquiète j'ai essayé ton code avec plusieurs chaînes moi aussi j'ai toujours cette erreur. Un petit problème avec la fonction fpart on dirait.

Sinon j'ai regardé d'autres codes utilisant ce type de fonction, apparemment c'est admis que le ipart est essentiel pour ne pas avoir d'erreur puisque tout le monde a l'air de le mettre sans se poser de questions. Le bug doit donc être connu depuis un bout de temps. Je vais fouiller un peu pour les raisons.



Le iPart ne fonctionne pas dans le cas où l'arrondi est inférieur au nombre entier voulu. Il faut donc plutôt arrondir à l'entier le plus proche. Par exemple (testé à l'instant) :


Code
iPart(13fPart(16/13))=2
round(13fPart(16/13),0)=3



 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2019 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink