Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Convertisseur Année Lumière en KM
pito2901 le 06/06/2013 à 18:45
Bonjour à tous,
mon souci est que mon programme n'effectue pas les arrondis que je lui demande, le voici:
Code
EffEcr
Menu("CONVERTIR","A.L EN KM",1,"KM EN A.L",2
EffEcr
Lbl 1
Input "DONNEE ",A
9,4607304726×10^12xA -> B
arrondi(B,2
Sci
Disp B
Pause
Stop
Lbl 2
Input "DONNEE ",C
1,057000834×10^(-)13xC -> D
arrondi(D,2
Sci
Disp D
Pause
Stop
Voilà, merci de votre aide...
m@thieu41 le 06/06/2013 à 19:39
Bonjour,
Essaye:
Petite remarque: en mode scientifique, il y a un petit problème à ce niveau.
Ex:
Code
12.343->A
Disp arrondi(A,2
donnera (en mode normal):
12.34
Et en mode scientifique:
1.234*10^1
Je suppose que tu voulais qu'en mode scientifique il soit affiché "1.23*10^1" non?
(Si c'est le cas, signale le, je vois un moyen de le faire mais il faut que j'y réfléchisse 2 secondes

)
EDIT: Je donne mon alternative, au cas où (va plus loin pour une solution qui marche à tous les coups):
Code
Disp arrondi(A,N-partEnt(log(A //N correspond au nombre de chiffres après la virgule souhaités
Celle ci ne marche que dans le cas où tu es sur que le nombre est strictement inférieur à 10^(N+1) (soit A<1000 si N=2)...
Je cherche pour que ce soit valide dans tout les cas je te tiens au courant
Re-EDIT:
Alors voilà une solution qui marche quel que soit le nombre:
(On cherche à afficher A avec N nombres après la virgule):
Code
Disp 10^partEnt(log(abs(A))-N)partEnt(A*10^(N-partEnt(log(abs(A
Comme c'est embêtant à retaper pleins de fois, je te conseille de le mettre dans un prgm qui gèrera ça à ta place.
Code
//Prgm ARONDI
Disp 10^partEnt(log(abs(Rép))-N)partEnt(Rép*10^(N-partEnt(log(abs(Rép
//Et pour l'utiliser dans un autre prgm
2->N //Tu fixes le nb de chiffres après la virgule au début du prgm (ou tu peux carrément remplacer N par ce nombre dans le prgm ARONDI si tu est sur de toujours vouloir ce nombre de chiffres)
1234.438129Y+137890.312907*10^(-EA67->A //Calcul hyper méga compliqué
A //C'est pour stocker A dans Rép (Rép est une variable qui stocke le résultat du dernier calcul effectué, donc pas besoin de cette ligne si le dernier calcul avait pour résultat la valeur que tu veux afficher)
prgmARONDI
//Pour afficher B le résultat de A*123.783612 avec un arrondi de 2, il suffit de faire:
2->N
A*123.783612->B
prgmARONDI
linkakro le 06/06/2013 à 23:17
STOP ! Vous vous donnez du mal pour rien car la solution est beaucoup plus simple.
Cause 1 :
La fonction arrondi ne met pas les variables à jour, il faut stocker ou réutiliser immédiatement le résulat.
Cause 2 :
Placer le format Sci AVANT le calcul d'arrondit contrôlera correctement l'arrondi dans la plupart des cas.
Cause 3 (la moins évidente, voire pas du tout évidente) :
La fonction arrondi avec paramètre arrodi toujours le nombre réel, pas la mantisse (nombre autre que l'exposant) de l'écriture scientifique.
Tandis que la fonction arrondi sans argument respecte à la fois les modes et l'écriture scientifique.
Code
EffEcr
Menu("CONVERTIR","A.L EN KM",1,"KM EN A.L",2
Lbl 1
Input "DONNEE ",A
9,4607304726*10^12*A -> B
Sci
Fixe 2
Disp B
Flottant
Pause
Stop
Lbl 2
Input "DONNEE ",C
1,057000834*10^(-)13*C -> D
Sci
Fixe 2
Disp D
Flottant
Pause
Code
EffEcr
123.456->A
Normal
Flottant
Disp A // 123.456
Disp arrondi(A,2 // 123.46
Fixe 2
Disp A // 123.46
Disp arrondi(A // 123.46
Pause
Sci
Flottant
Disp A // 1.23456 E2
Disp arrondi(A,2 // 1.2346 E2
Fixe 2
Disp A // 1.23 E2
Disp arrondi(A // 1.23 E2
m@thieu41 le 07/06/2013 à 09:25
bouhouhou
/me etait fier de sa formule
Autant pour moi je ne savais pas que la fonction arrondi en mode scientifique marchait ainsi

linkakro le 07/06/2013 à 17:29
Je reconnais que c'est pas évident au premier abord

.
Et le manuel n'est pas assez clair.
Citation
arrondi( donne un nombre, une expression, une liste ou une matrice arrondie à #decimales (<=9). Si #decimales n’est pas mentionné, valeur est arrondi aux chiffres affichés, soit jusqu’à 10 chiffres.
arrondi(valeur[,#decimales])
Si on s'intéresse quand même aux formules voici mes réflexions.
Je préfère utiliser l'arrondi plutôt que les troncatures puisque c'est l'objectif de ce sujet.
Et peu importe si on a des variables ou Rép/Ans.
Se rappeler que partEnt=int et ent=iPart (erreur officielle de TI) permet d'éviter des erreurs pour des nombres négatifs, y compris les exposants qu'on traite.
Je fais attention au nombre zéro.
Code
123.456->A
2->B
If A
Then
10^(iPart(log(abs(A))))round(A10^(-iPart(log(abs(A)))),B)
Else
0
End
Disp Ans
m@thieu41 le 07/06/2013 à 18:31
Autant pour moi, je ne savais pas que log(0) était impossible
Et c'est vrai que c'est mieux avec un arrondi

pito2901 le 07/06/2013 à 18:51
Merci quand même, mais je prends la solution de linkakrom@thieu41 le 07/06/2013 à 19:47
Je me doute bien
En plus ma formule était incomplète

Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.