floor

Utilisation de Xcas

Modérateur : xcasadmin

Elphonse
Messages : 2
Inscription : mar. avr. 05, 2016 9:23 pm

floor

Message par Elphonse » mer. avr. 06, 2016 7:29 am

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é".

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: floor

Message par frederic han » mer. avr. 06, 2016 8:19 am

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

Code : Tout sélectionner

5.45*100-545
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:

Code : Tout sélectionner

floor(5.4500000000000000000*100)
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)

Elphonse
Messages : 2
Inscription : mar. avr. 05, 2016 9:23 pm

Re: floor

Message par Elphonse » mer. avr. 06, 2016 2:10 pm

Merci de cette explication détaillée. Cela répond bien à mon interrogation.

parisse
Messages : 5739
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: floor

Message par parisse » jeu. avr. 07, 2016 9:00 am

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.

Répondre