Décimales parasites

Résolu/Fermé
dominique - 5 juil. 2011 à 15:56
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 - 7 juil. 2011 à 13:05
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

eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
Modifié par eriiic le 6/07/2011 à 17:25
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
Raymond PENTIER Messages postés 58423 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 10 mai 2024 17 105
7 juil. 2011 à 02:39
Négatif, ami Eric : essaie avec 12 décimales !
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
Modifié par eriiic le 7/07/2011 à 07:26
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
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 943
5 juil. 2011 à 18:31
Salut le forum

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

Mytå
0
Raymond PENTIER Messages postés 58423 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 10 mai 2024 17 105
6 juil. 2011 à 04:33
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
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
Raymond PENTIER Messages postés 58423 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 10 mai 2024 17 105
6 juil. 2011 à 13:33
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
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
Raymond PENTIER Messages postés 58423 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 10 mai 2024 17 105
7 juil. 2011 à 02:38
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
OK, ça marche avec la fonction "arrondi". C'est parfait.

Merci et peut-être bonnes vacances.
Dominique
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 943
6 juil. 2011 à 14:47
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 943
Modifié par Mytå le 6/07/2011 à 15:01
Re le forum

Lien : Comment faire pour corriger les erreurs d'arrondi dans l'arithmétique en virgule flottante

Lien : L'arithmétique en virgule flottante peut fournir des résultats incorrects dans Excel

Mytå
Quelle prétention de prétendre que l'informatique est récente
Adam et Eve avaient déjà un Apple ! [MsProject 2003(FR), Excel 2003-2007(FR)]
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
6 juil. 2011 à 17:02
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