Décimales parasites
Résolu
dominique
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 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.
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.
A voir également:
- Décimales parasites
- Javascript arrondir à 2 décimales - Forum Webmastering
- Arrondir à 2 décimales après la virgule - calculateur javascript ✓ - Forum Javascript
- Publipostage montant avec 2 décimales - Forum Word
- 2 décimales après la virgule excel - Forum Excel
- Résultat calcul javascript à 2 décimales ✓ - Forum Javascript
6 réponses
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
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
Salut le forum
Une solution : Outils > Options > Calcul > Cocher Calcul avec la précision au format affiché
Mytå
Une solution : Outils > Options > Calcul > Cocher Calcul avec la précision au format affiché
Mytå
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 ...
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 ...
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.
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.
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.
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.
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 :
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.
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.
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å
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å
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)]
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)]
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"
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"
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.