Page 1 sur 1
floor
Publié : mer. avr. 06, 2016 7:29 am
par Elphonse
Merci de m'éclairer sur la réponse 544 donnée par Xcas à
floor(5.45*100)
J’attendais 545 "plus grand entier relatif inférieur ou égal au nombre considéré".
Re: floor
Publié : mer. avr. 06, 2016 8:19 am
par frederic han
Je pense que c'est parce que xcas travaille en base 2, donc 5.45 est une valeur approchée non exacte. En précision par defaut de <=14 chiffres j'ai
me donne un resultat négatif.
à partir de 15 chiffres les approximations sont différentes et on semble avoir plus de chance:
Code : Tout sélectionner
a:=approx(545/100,14);
b:=approx(545/100,15);
floor(a*100);//donne 544
floor(b*100);//donne 545
NB:
donne 545 mais je ne sais pas si c'est un coup de chance ou si le fait d'ajouter de nombreux 0 après 5.45 crée vraiment un objet de grande précision comme le fait approx(545/100,20)
Re: floor
Publié : mer. avr. 06, 2016 2:10 pm
par Elphonse
Merci de cette explication détaillée. Cela répond bien à mon interrogation.
Re: floor
Publié : jeu. avr. 07, 2016 9:00 am
par parisse
En effet, sur des versions suffisamment recentes de Xcas, le parser tient compte du nombre de chiffres significatifs de l'input pour generer un flottant multi-precision meme si la precision du CAS est reglee par defaut a moins de 14.
Sinon, 5.45 n'est pas representable exactement en flottants en base 2 (seuls des rationnels dont le denominateur divise une puissance de 2 pas trop grande sont representables exactement), donc 5.45*100 n'est pas egal a 545.