Décimales parasites

Résolu
dominique -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Dans une feuille de calcul, j'ai une somme très simple de 3 cellules. Chacune a 2 décimales (euros et centimes) (vérifié avec un copier/coller-valeur). La somme sort avec 11 décimales et une "erreur" de 0,00000000002 ????? Les changements de format n'apportent pas de solution.
====> le rapprochement avec une balance zéro ne fonctionne pas.

Merci d'avance pour un tuyau.

6 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Tu peux aussi sélectionner les cellules concernées (C:C) et les mettre au format 'Comptabilité' (et pas monétaire...) qui est étudié pour...
    Il travaille en interne avec des entiers, et une virgule fixe à 4 décimales (non ce n'est pas antinomique ;-)).
    Ce qui met à l'abri de toute erreur d'arrondi dûe au stockage interne des réels.

    Avec ce format tu retrouves bien 1660.92 en C33 sans toucher aux formules

    eric
    1
    1. Raymond PENTIER Messages postés 58219 Date d'inscription   Statut Contributeur Dernière intervention   17 485
       
      Négatif, ami Eric : essaie avec 12 décimales !
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour raymond,

      Ce format est destiné aux comptables qui additionnent/multiplient des nombres à 2 décimales.
      Il n'y pas d'erreur d'arrondi avec ce format puisque les calcul se font avec des entiers et permet d'avoir des balances exactes.
      Tu as le droit de mettre +1 ;-)

      eric

      edit : aide excel
      Currency, type de données

      Les variables de type Currency sont stockées sous la forme de nombres de 64 bits (8 octets) au format entier, avec un décalage de 10 000 afin d'obtenir un nombre à virgule fixe comprenant 15 chiffres à gauche du séparateur décimal et 4 chiffres à droite. Cette représentation offre une plage comprise entre -922 337 203 685 477,5808 et 922 337 203 685 477,5807. Le caractère de déclaration de type Currency est le signe @.

      Le type de données Currency est utile pour les calculs monétaires et pour les calculs à virgule fixe dans lesquels la précision revêt une importance particulière.
      0
  2. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
     
    Salut le forum

    Une solution : Outils > Options > Calcul > Cocher Calcul avec la précision au format affiché

    Mytå
    0
  3. Raymond PENTIER Messages postés 58219 Date d'inscription   Statut Contributeur Dernière intervention   17 485
     
    Non ! Tu fais erreur : Tes nombres n'ont pas tous 2 décimales.

    Il suffit que l'un d'eux soit le résultat d'une opération (multiplication, division, extraction de racine, sinus, cosinus ...) pour que le résultat en mémoire comporte plus de 2 décimales.
    Il ne faut pas que tu confondes avec la valeur affichée dans la cellule, qui peut être différente du nombre contenu dans la cellule ...
    0
    1. dominique
       
      Bonjour Raymond,
      C'est bien ce que je ne comprends pas : Tous les montants saisis n'ont que 2 décimales et les seules fonctions utilisées sont des sommes : somme(); somme si(); + ; - .
      Il n'y a aucune multiplication, sinus, etc.
      Voici le copier/coller-valeur du dernier calcul, le résultat comptable étant la simple somme des 3 chiffres au dessus !!!!!!!

      Résultat d'exploitation de l'exercice: 44 060,9200000000000000

      INVESTISSEMENTS MATERIEL
      Achat moteurs et appareils -42 400,0000000000000000
      Vente appareils 0,0000000000000000
      Résultat comptable de l'exercice 1 660,9199999999800000

      Merci par avance de tes lumières.
      0
    2. Raymond PENTIER Messages postés 58219 Date d'inscription   Statut Contributeur Dernière intervention   17 485
       
      Je me souviens avoir lu quelque chose sur un bug ancien ...
      Quelle version utilises-tu ?

      Vérifie si l'anomalie se reproduit en refaisant exactement tes mêmes opérations :
      - sur un autre ordinateur
      - avec une autre version d'excel

      Si tu veux, envoie-moi ton fichier avec https://www.cjoint.com/ pour que je contrôle quelque chose.

      Cordialement.
      0
    3. dominique
       
      http://cjoint.com/?3Ggp3e8O1dE

      Le pb se situe dans C33 de la feuille "cpt exploitation".
      O1 de la feuille "journal" devrait être verte et ressort en rouge ......
      Pas très grave, mais j'aimerais comprendre.
      J'utilise XP.
      Merci d'avance.
      0
    4. Raymond PENTIER Messages postés 58219 Date d'inscription   Statut Contributeur Dernière intervention   17 485
       
      Salut dominique.

      Le post #6 de Mytå du 6 jui 2011 à 14:51 te propose le lien "L'arithmétique en virgule flottante peut fournir des résultats incorrects dans Excel" où se trouve l'explication technique que tu voulais :
      Lors du stockage de nombres, un nombre binaire correspondant peut représenter chaque nombre ou nombre fractionnel. Par exemple, la fraction 1/10e peut être représentée dans un système de numération décimal comme 0,1. Toutefois, ce même nombre converti au format binaire prend la forme du nombre décimal binaire répétitif suivant :
      0001100110011100110011 (etc.)
      qui peut être répété à l'infini. Ce nombre ne peut pas être représenté dans un espace fini (limité). Par conséquent, il est arrondi d'environ -2.8E-17 lorsqu'il est stocké.

      Le post #5 de Mytå du 6 jui 2011 à 14:47 t'avait fourni la méthode à suivre, au moins pour la cellule où tu fais le rapprochement.

      Cordialement.
      0
    5. dominique
       
      OK, ça marche avec la fonction "arrondi". C'est parfait.

      Merci et peut-être bonnes vacances.
      Dominique
      0
  4. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   958
     
    Re le forum

    Pour réduire les conséquences éventuelles de l'inexactitude du stockage arithmétique à virgule flottante, vous pouvez aussi utiliser la fonction ARRONDI pour arrondir les nombres au nombre de décimales requis par vos calculs.

    Mytå
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    si tu souhaites afficher deux décimales, formates tes trois cellules en format nombre deux décimales
    en 28 colle cette formule
    =TEXTE(C12+C26;"# ##0,00")*1
    en C31
    =TEXTE(SOMME.SI(journal!$F:$F;$A31;journal!$D:$D)-SOMME.SI(journal!$E:$E;$A31;journal!$D:$D);"# ##0,00")*1

    et en C33
    =TEXTE(SOMME(C28;C31:C32);"# ##0,00")*1

    par contre si tu ne souhaites pas de décimales formate les cellules en fonction

    modifie la formule

    "# ##0,00" par "# ##0" ou "standard"
    0