Accueil › Forums › Programmation WIMS › Programmation d’exercices OEF › éviter l’écriture scientifique
Étiqueté : scientifique
- Ce sujet contient 5 réponses, 2 participants et a été mis à jour pour la dernière fois par
Lionel Verbecq, le il y a 11 mois et 1 semaine.
-
AuteurMessages
-
-
17 juin 2022 à 17:55 #7152
Lionel Verbecq
Participant::Bonjour,
Dans un exercice de conversion d’aire, la réponse s’affiche en écriture scientifique
ce qui est incompréhensible pour un élève de 6e -5e
J’ai alors modifié mon exercice en utilisant une idée vue sur le forum :
\text{rep1deci=pari(default(format, "f.20"); u1=\rep1; printf(u1); )}
cela fonctionne presque car maintenant j’ai cela :
et aussi :
Quelqu’un a-t-il un moyen qui permet de résoudre totalement mon problème c’est à dire éviter l’écriture scientifique sans que 0.03 ne se transforme en 0.02999… ?
Merci.
Lionel.
-
Ce sujet a été modifié il y a 11 mois et 1 semaine par
Olivier. Raison : ajout de `...`autour du code
-
Ce sujet a été modifié il y a 11 mois et 1 semaine par
-
17 juin 2022 à 20:04 #7153
bernadette
Maître des clés::Quel calcul as-tu fait avant ? tu es parti de nombres réels ? ou rationnels ? Quel ordre de grandeur ? en général la notation scientifique n’apparait que pour des grands nombres ou de très petits ? On ne peut pas répondre de manière pertinente (en tout cas moi) sans détails supplémentaires. Car cela dépend la situation.
-
18 juin 2022 à 15:46 #7163
Lionel Verbecq
Participant::Bonjour,
Il s’agit d’un exercice de conversion d’aires de J-L Donadoni que j’ai repris sans changer le début. Ma modification apparait à partir de l’introduction du logiciel PARI :
\precision{1000000000} \text{unit=\(km^2),\(hm^2),\(dam^2),\(m^2),\(dm^2),\(cm^2),\(mm^2)} \title{Conversions d'aires 2} \integer{n1=randint(1..9)} \integer{u1=randint(2..7)} \integer{z1=randint(-4..-1)} \if{\u1+\z1<1}{\integer{z1=-1}} \integer{n2=randint(1..9)} \integer{u2=randint(2..7)} \integer{z2=randint(-4..-1)} \if{\u2+\z2<1}{\integer{z2=-1}} \real{rep1=\n1*10^(\z1*2)} \real{rep2=\n2*10^(\z2*2)} \text{rep1deci=pari(default(format, "f.20"); u1=\rep1; printf(u1); )} \text{rep2deci=pari(default(format, "f.20"); u2=\rep2; printf(u2); )}
Lionel.
-
Cette réponse a été modifiée le il y a 11 mois et 1 semaine par
Olivier. Raison: ajout de `...` autour du code
-
Cette réponse a été modifiée le il y a 11 mois et 1 semaine par
-
18 juin 2022 à 18:41 #7164
bernadette
Maître des clés::Il n’y a donc que des rationnels. Donc calcule dans pari.
\text{rep1=pari(\n1*10^(\z1*2))}
et de même pour l’autre. Mais du coup tu auras un rationnel. Et pourquoi ne restes-tu pas avec un rationnel ?
Si tu fais
\text{rep1=pari(1.*\n1*10^(\z1*2))}
pari le traitera en réel, et en effet s’il est trop petit, des E seront introduits.
Dans ton cas, si ni les rationnels, ni les réels ne conviennent, comme tu as un entier inférieur à 10 que tu multiplies par une puissance négative de 10, tu peux aussi construire le nombre « à la main ».
\text{v=wims(makelist 0 for t=1 to -2*\z1-1)} \text{v=0.wims(nospace wims(replace internal , by in \v))\n1}
ou un truc comme cela (je ne garantis pas le nombre de zéros, mais c’est facile à ajuster).
-
Cette réponse a été modifiée le il y a 11 mois et 1 semaine par
Olivier. Raison: ajout de `...` autour du code
-
Cette réponse a été modifiée le il y a 11 mois et 1 semaine par
-
18 juin 2022 à 18:45 #7165
bernadette
Maître des clés -
19 juin 2022 à 18:22 #7168
Lionel Verbecq
Participant
-
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.