::
Bonjour,
Dans un exercice que j’écris sur les conversions d’unités , j’obtiens ceci lorsque je veux tester l’exercice en insérant automatiquement la bonne réponse.
https://mathscollege.ynh.fr/nextcloud/s/36eyWeZJGg3zWaR
Comment est-ce possible ? Pourquoi wims change mon 3 en 0.29999… ?
Comment l’éviter ?
Pour info voici mon code ( j’obtiens ma réponse, puis si elle est en écriture scientifique -je n’en veux pas, je la force avec pari pour rester en décimal, puis je regarde si la fin du nombre se termine par .0, si oui je retire .0 de la fin de la chaine de caractère pour obtenir ma réponse ( en text ):
\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);
)}
\integer{nbre1=wims(charcnt \rep1deci)}
\integer{nbre2=wims(charcnt \rep2deci)}
\text{der1=wims(char -2 to -1 of \rep1deci)}
\text{der2=wims(char -2 to -1 of \rep2deci)}
\text{fin=.0}
\if{\der1==.0}{\text{rep1bisdeci=wims(char 1 to -3 of \rep1deci)}}{\text{rep1bisdeci=\rep1deci}}
\if{\der2==.0}{\text{rep2bisdeci=wims(char 1 to -3 of \rep2deci)}}{\text{rep2bisdeci=\rep2deci}}
\statement{Convertir :
- \n1 \unit[\u1] = \embed{r1,10} \unit[\u1+\z1]
«
- \n2 \unit[\u2] = \embed{r2,10} \unit[\u2+\z2]
}
\answer{}{\rep1bisdeci}{type=case}
\answer{}{\rep2bisdeci}{type=case}
Autre question, pourquoi l’écriture forcée en décimale des grands nombres se termine parfois par .0 ? Comment l’éviter ?
Evidemment si vous savez simplifier mon code, n’hésitez pas.
Merci.
Lionel.