Plusieurs notations de résultats dans un seul programme ?
Posté le 13/04/2020 01:26
Bonjour,
J'aimerai à l'aide de la fonction" Display" ([SHIFT] [SET UP] [DISP]) pouvoir mettre plusieurs notation différentes dans un seul même programme. Je veux pouvoir afficher un résultat en notation scientifique [Sci] si une variable rempli une condition à l'aide d'une fonction If, et un résultat en notation norm 1 [Norm] si une variable rempli une condition à l'aide d'une fonction If.
Le problème que je remarque c'est que si je met en Then la fonction Sci, alors peut importe si je met Norm dans un autre Then, le résultat prendra en compte le Sci, et vice versa. La première indication de notation semble s'appliquer à tout le programme peu importe ce que je demande...
Est ce que vous voyez un moyen de régler mon problème ?
Si oui, je vous explique ce que je veux obtenir :
If L ≥0.001
Then Sci 2
L // <-- Notation scientifique avec 1 chiffre après la virgule
Else If L≥0.01
Then Norm 1
RndFix(L,4) // <-- Notation normale avec 4 chiffres après la virgule
Else If L≥0.1
Then Norm 1
RndFix(L,3) // <-- Notation normale avec 3 chiffres après la virgule
Esle If L≥1
Then Norm 1
RndFix(L,2) // <-- Notation normale avec 2 chiffres après la virgule
Else If l≥100
Then Norm 1
RndFix(L,1) // <-- Notation normale avec 1 chiffres après la virgule
IfEnd
IfEnd
IfEnd
IfEnd
IfEnd
En partant de la "logique" de ce code, j'aimerais avoir comme résultat visible sur l'écran :
L = 0,0097582 écrit comme ça :
9,8e-03
L = 0,097582 écrit comme ça :
0,0976
L = 0,97582 écrit comme ça :
0,976
L = 9,7582 écrit comme ça :
9,76
L = 975,82 écrit comme ça :
975,8
Merci de votre aide !
Citer : Posté le 13/04/2020 09:38 | #
Je n'ai pas de problème à changer de mode conditionnellement. Attention, il faut faire l'affichage pendant que le mode est actif.
Voilà par exemple ce que j'ai testé :
If A≤0:Then
Sci 2
0.0097582
Else
Norm 1
975.82
IfEnd
Ici, pas de problème, si on entre un nombre strictement positif on obtient 9.8e-03, et sinon on obtient 975.82.
Lenn-e Invité
Citer : Posté le 13/04/2020 16:17 | #
Merci beaucoup Lephenixnoir,
ton message m'a permis de me rendre compte que le problème était autre pars, et j'ai pu le résoudre !
Citer : Posté le 13/04/2020 16:31 | #
Tant mieux ! Peux-tu expliquer rapidement ce qui se produisait et quelle était la solution, pour que ça serve aux futurs lecteurs de cette page ?
Lenn-e Invité
Citer : Posté le 15/04/2020 18:08 | #
Oui bien sûr :
Je voulais donc créer un programme qui me permettait de faire un calcul avec une variable, ici "L" et je voulais également que la calculatrice affiche le résultat avec des notations différentes en fonction de ce que j'avais besoin (exemple : 96756,238 ici le "38" est de trop. A l'inverse, 0.0000000953 est bien trop gros pour être compris, alors j'ai besoin de voir sous notation scientifique : 9,5e-08).
Mon problème n'étais pas qu'on ne pouvais pas cumuler plusieurs modes d'affichage dans le même code, car comme tu l'as dit ça fonctionne.
Mais en fait je m'étais gouré dans la manière de de faire les "palier" c'est à dire : entre quel et quel valeur ont met tel affichage, et entre quel et quel valeur on en met un autre. donc en ayant tout écris sur papier j'y ai vu plus clair et je me suis rendu compte que mes conditionnelles ">" ou "<" étaient mis n'importe comment.
voilà mon code qui marche :
0.775(10^(L/20))→L
Locate 7,4,"CA FAIT :"
If L<0.01
Then Sci 2
Locate 5,6,L
Else If L<0.1
Then Norm 1
Locate 5,6,(RndFix(L,4))
Else If L<1
Then Norm 1
Locate 5,6,(RndFix(L,3))
Else If L<100
Then Norm 1
Locate 5,6,(RndFix(L,2))
Else If L≥100
Then Norm 1
Locate 5,6,(RndFix(L,1))
IfEnd
IfEnd
IfEnd
IfEnd
IfEnd
Locate 13,6,"Volts"
Citer : Posté le 15/04/2020 18:12 | #
Tu devrais pouvoir utiliser les log pour avoir la longueur du nombre et remplacer Roundfix(L,longueur)
Citer : Posté le 15/04/2020 19:07 | #
Pour être encore plus souple on peut même noter :
Longueur = int(log(abs(nombre))) + 1
(le log des nombres négatifs n'existe pas )
Citer : Posté le 15/04/2020 19:15 | #
C'est pas suffisant, cette notation n'est utile que pour les entiers jusqu'à une certaine limite...