Bonjour,

(Je retente l'envoi apr�s mon insciption sur la liste... J'avais
vu cette enfilade par hasard ce week-end, je ne suis moi-m�me pas
un utilisateur du tableur.)

On 2005-02-20 07:26:14 +0100, Marie jo KOPP CASTINEL wrote:
[...]
> >>En A1, une valeur 123456,78
> >>En B1, j'extraie la partie d�cimale pour en faire une valeur enti�re 
> >>avec la formule =(A1-ENT(A1))*100
> >>J'obtiens logiquement 78
> >>Exact ? Non, erreur ! Pour vous en persuader, en C1, entrons =ENT(B1) 
> >>et � ce moment, nous obtenons 77 et non 78.
> >>
> >>Pourquoi ?
> >>Impr�cision du calcul.

Oui, parce qu'en interne, les calculs se font en base 2.

> >>Pour vous en convaincre, il suffit d'aller en B1, clic droit,
> >>Formater les cellules, Nombres. Dans D�cimales, augmentez le
> >>nombre, jusqu'� 10 et plus : surprise !
> >>
> >>Comment contourner le probl�me ?
> >>En B1, il faut faire :
> >>=ARRONDI((A1-ENT(A1))*100;0)
[...]

> Il ne s'agit pas d'une erreur mais de quelque chose de g�r� dans les 2 
> tableurs. Par d�faut, ils calculent avec 8 d�cimales
> Pour Ooo, Outils/option
> Tableur / calcul              cocher "Exactitude comme affich�"
> Cette option devrait d'ailleur �tre coch�e par d�faut pour les personnes 
> qui utilisent les tableurs pour faire de la gestion.

Attention, �a ne r�sout pas compl�tement le fond du probl�me.
=(A1-INT(A1))*100 affiche 78, mais si tu fais

  =INT((A1-INT(A1))*100)

tu obtiendras 77 et non 78, m�me si cette option est coch�e.

Je pense que cette option introduit la diff�rence suivante:

  _ Si elle n'est pas coch�e, les valeurs sont compl�tement manipul�es
    en base 2. Lorsqu'un nombre est entr� par l'utilisateur, il est
    converti en base 2. Tous les calculs se font en base 2. Il n'y a
    conversion en base 10 que lors de l'affichage.

  _ Si elle est coch�e, les valeurs de r�f�rences sont en base 10.
    Une valeur r�utilis�e en provenance d'un calcul sera convertie
    en base 10 pour affichage, et reconvertie en base 2 pour les
    calculs l'utilisant.

Cette option fait intervenir plus d'arrondis (c'est peut-�tre la
raison pour laquelle elle n'est pas activ�e par d�faut), mais dans
les cas pratiques, je suppose que cela aura g�n�ralement l'effet
escompt�.

Voici un exemple:

A1: 123456.78
B1: =(A1-INT(A1))*100
C1: =INT(B1)
D1: =INT((A1-INT(A1))*100)

Voici ce qui est affich� (si les autres options ne sont pas chang�es).
Je met des guillemets pour indiquer le texte affich� (valeurs arrondies
en base 10), et pas de guillemets pour les valeurs internes en base 2,
sur lesquelles se font tous les calculs.

A1: "123456.78"

B1: "78" (arrondi en base 10 d'une valeur X un peu inf�rieure � 78).

C1:
_ Option non coch�e: "77" (le r�sultat de INT(X) est 77, et arrondi
  en base 10 pour affichage, �a donne "77").
_ Option coch�e: "78" (le r�sultat affich� "78" est d'abord converti
  en base 2, ce qui donne exactement 78, puis le tableur calcule
  INT(78), ce qui donne 78, puis convertit la valeur en base 10 pour
  affichage, ce qui donne "78" exactement).

D1: "77" dans les deux cas, car la valeur des calculs en base 2 est
  77, qui donne "77" apr�s conversion en base 10.

Voil�, j'esp�re que c'est suffisamment clair.

-- 
Vincent Lef�vre <[EMAIL PROTECTED]> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à