next up previous contents index
suivant: Affichage d'un nombre décimal monter: Affichage d'un nombre en précédent: Transformation d'un affichage par   Table des matières   Index

Affichage d'un nombre décimal de [0,1[ par tranches de p chiffres

Pour rendre plus facile la lecture d'un nombre décimal de [0,1[, on veut l'afficher par tranches, c'est à dire selon une chaîne de caractères constituées par les p premières décimales du nombre et d'un espace, puis les p suivants etc... On suppose que l'écriture de d comporte un point (.) suivi des décimales et ne comporte pas d'exposant (pas de e4)

On écrit le programme qui va afficher le nombre d par tranches de p chiffres:

affiched(d,p):={
local deb,result;
//on suppose 0<=d<1
d:=cat(d,"");
if (d[0]=="0") {d:=tail(d);}
if (expr(tail(d))<10^p){return d;}
deb:=mid(d,0,p+1);
result:=cat(deb," ");
d:=mid(d,p+1);
while (expr(d)>10^p) {
deb:=mid(d,0,p);
result:=cat(result,deb," ");
d:=mid(d,p);
}
return cat(result,d);
};
On tape :
affiched(0.1234567,3)
On obtient :
".123 456 7"
Remarque
La commande enleve(affiched(d,3)," ") permet encore de retrouver d.
enleve(chn,ch):={
local l,s;
s:=length(chn)-1;
//on transforme chn en une liste de ces lettres
//puis, on enleve le caractere ch de cette liste
l:=remove(x->(ord(x)==ord(ch)),seq(chn[k],k,0,s));
//on transforme la liste en chaine
return expr(char(ord(l)));
};


Documentation de giac écrite par Renée De Graeve