OVH Cloud OVH Cloud

le TRONQUE qui trompe

7 réponses
Avatar
bricolo_chris
Bonjour =E0 tous,

Je suis tomb=E9 sur un petit bug dans Excel. Je ne crois pas qu'il ait
d=E9j=E0 =E9t=E9 signal=E9 dans ce groupe.
Alors voil=E0:
=3D60*(1,15-1) donne comme r=E9sultat 9, ce qui correct

maintenant:
=3DTRONQUE(60*(1,15-1)) donne comme r=E9sultat 8 !

Il est mignon, non ?

Par contre, ca ne me rassure pas sur la fiabilit=E9 des calculs dans
Excel...

7 réponses

Avatar
Régis
Hello Chris,

Pas sûr que l'on puisse parler de bug en l'occurence mais plutôt de finesse
du calcul. Si tu assignes à la fonction TRONQUE une limite décimale
supérieure à 13 =TRONQUE(60*(1,15-1);14) par exemple tu obtiendra bien
9,0000000000000 car 60*(1,15-1) étendu à sa 13éme décimale donne
8,99999999999999, donc, un entier de 8, CQFD.
Pas encore d'inquiétude question fiabilité de calcul à ce stade :o)

Bien à toi,


Bonjour à tous,

Je suis tombé sur un petit bug dans Excel. Je ne crois pas qu'il ait
déjà été signalé dans ce groupe.
Alors voilà:
`*(1,15-1) donne comme résultat 9, ce qui correct

maintenant:
=TRONQUE(60*(1,15-1)) donne comme résultat 8 !

Il est mignon, non ?

Par contre, ca ne me rassure pas sur la fiabilité des calculs dans
Excel...




Avatar
bricolo_chris
On 23 fév, 16:05, Régis wrote:
Hello Chris,

Pas sûr que l'on puisse parler de bug en l'occurence mais plutôt de f inesse
du calcul. Si tu assignes à la fonction TRONQUE une limite décimale
supérieure à 13 =TRONQUE(60*(1,15-1);14) par exemple tu obtiendra b ien
9,0000000000000 car 60*(1,15-1) étendu à sa 13éme décimale donne
8,99999999999999, donc, un entier de 8, CQFD.
Pas encore d'inquiétude question fiabilité de calcul à ce stade :o)

Bien à toi,




Bonjour à tous,

Je suis tombé sur un petit bug dans Excel. Je ne crois pas qu'il ait
déjà été signalé dans ce groupe.
Alors voilà:
`*(1,15-1) donne comme résultat 9, ce qui correct

maintenant:
=TRONQUE(60*(1,15-1)) donne comme résultat 8 !

Il est mignon, non ?

Par contre, ca ne me rassure pas sur la fiabilité des calculs dans
Excel...- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Bonjour Régis,

ok, j'avais remarqué aussi l'histoire de la limite décimale. Mais
mathématiquement 60*(1,15-1) est bien égal à 9 et pas 8,9999999999
Je ne vois pas pourquoi Excel tout d'un coup perd 0,0000000000000001
(pardon, je n'ai pas compté les zéros, mais tu vois ce que je veux
dire).

Cordialement.


Avatar
garnote
Salut bricolo,

Moi aussi ça m'agace car si j'utilise le résultat obtenu
dans d'autres calculs, adieu la justesse des résultats.
Par contre =TRONQUE(calcul;15) semble correct.
Si c'est le cas, toujours utiliser cette formule et si le
résultat affiché dans la cellule n'est pas un nombre entier,
utiliser =TRONQUE(cellule).
J'ai pensé à =TRONQUE(TRONQUE(A1;15)).
Avec cette formule, si j'entre un nombre en A1 qui n'est
pas le résultat d'un calcul, c'est correct.
Par contre si A1 contient une formule, ça ne fonctionne pas
toujours. Exemple : A1 contient la formule `*(1,15-1).
Et curieusement, avec `*0,15 ça va !
Si j'entre 1,99999999999999999 en A1, 2 est affiché mais
le résultat de =TRONQUE(TRONQUE(A1;15)) est correct : 1.
Une fonction personnalisée, peut-être ?
Erre-je et que faire ?

Serge




"bricolo_chris" a écrit dans le message de news:
On 23 fév, 16:05, Régis wrote:
Hello Chris,

Pas sûr que l'on puisse parler de bug en l'occurence mais plutôt de finesse
du calcul. Si tu assignes à la fonction TRONQUE une limite décimale
supérieure à 13 =TRONQUE(60*(1,15-1);14) par exemple tu obtiendra bien
9,0000000000000 car 60*(1,15-1) étendu à sa 13éme décimale donne
8,99999999999999, donc, un entier de 8, CQFD.
Pas encore d'inquiétude question fiabilité de calcul à ce stade :o)

Bien à toi,




Bonjour à tous,

Je suis tombé sur un petit bug dans Excel. Je ne crois pas qu'il ait
déjà été signalé dans ce groupe.
Alors voilà:
`*(1,15-1) donne comme résultat 9, ce qui correct

maintenant:
=TRONQUE(60*(1,15-1)) donne comme résultat 8 !

Il est mignon, non ?

Par contre, ca ne me rassure pas sur la fiabilité des calculs dans
Excel...- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Bonjour Régis,

ok, j'avais remarqué aussi l'histoire de la limite décimale. Mais
mathématiquement 60*(1,15-1) est bien égal à 9 et pas 8,9999999999
Je ne vois pas pourquoi Excel tout d'un coup perd 0,0000000000000001
(pardon, je n'ai pas compté les zéros, mais tu vois ce que je veux
dire).

Cordialement.


Avatar
MichDenis
Les fameuses transformations du décimale au binaire et l'inverse ...

Il est possible cependant d'utiliser ceci :

=TRONQUE(ARRONDI(60*(1,15-1);9))

Le 9 étant arbitraire...



"garnote" a écrit dans le message de news:

Salut bricolo,

Moi aussi ça m'agace car si j'utilise le résultat obtenu
dans d'autres calculs, adieu la justesse des résultats.
Par contre =TRONQUE(calcul;15) semble correct.
Si c'est le cas, toujours utiliser cette formule et si le
résultat affiché dans la cellule n'est pas un nombre entier,
utiliser =TRONQUE(cellule).
J'ai pensé à =TRONQUE(TRONQUE(A1;15)).
Avec cette formule, si j'entre un nombre en A1 qui n'est
pas le résultat d'un calcul, c'est correct.
Par contre si A1 contient une formule, ça ne fonctionne pas
toujours. Exemple : A1 contient la formule `*(1,15-1).
Et curieusement, avec `*0,15 ça va !
Si j'entre 1,99999999999999999 en A1, 2 est affiché mais
le résultat de =TRONQUE(TRONQUE(A1;15)) est correct : 1.
Une fonction personnalisée, peut-être ?
Erre-je et que faire ?

Serge




"bricolo_chris" a écrit dans le message de news:

On 23 fév, 16:05, Régis wrote:
Hello Chris,

Pas sûr que l'on puisse parler de bug en l'occurence mais plutôt de finesse
du calcul. Si tu assignes à la fonction TRONQUE une limite décimale
supérieure à 13 =TRONQUE(60*(1,15-1);14) par exemple tu obtiendra bien
9,0000000000000 car 60*(1,15-1) étendu à sa 13éme décimale donne
8,99999999999999, donc, un entier de 8, CQFD.
Pas encore d'inquiétude question fiabilité de calcul à ce stade :o)

Bien à toi,




Bonjour à tous,

Je suis tombé sur un petit bug dans Excel. Je ne crois pas qu'il ait
déjà été signalé dans ce groupe.
Alors voilà:
`*(1,15-1) donne comme résultat 9, ce qui correct

maintenant:
=TRONQUE(60*(1,15-1)) donne comme résultat 8 !

Il est mignon, non ?

Par contre, ca ne me rassure pas sur la fiabilité des calculs dans
Excel...- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Bonjour Régis,

ok, j'avais remarqué aussi l'histoire de la limite décimale. Mais
mathématiquement 60*(1,15-1) est bien égal à 9 et pas 8,9999999999
Je ne vois pas pourquoi Excel tout d'un coup perd 0,0000000000000001
(pardon, je n'ai pas compté les zéros, mais tu vois ce que je veux
dire).

Cordialement.


Avatar
garnote
Salut Denis,

Voilà ce qui me paraît le plus sûr pour éviter
les binaires embûches et traiter avec courtoisie
de très gros nombres !

Function pe(x As Range) As Double
'Cette fonction calcule la partie entière d'un nombre.
Dim v As Double
v = x.Value
pe = Fix(Round(v, 14))
End Function

Qu'en penses-tu ?

Serge


"MichDenis" a écrit dans le message de news:
Les fameuses transformations du décimale au binaire et l'inverse ...

Il est possible cependant d'utiliser ceci :

=TRONQUE(ARRONDI(60*(1,15-1);9))

Le 9 étant arbitraire...



"garnote" a écrit dans le message de news:

Salut bricolo,

Moi aussi ça m'agace car si j'utilise le résultat obtenu
dans d'autres calculs, adieu la justesse des résultats.
Par contre =TRONQUE(calcul;15) semble correct.
Si c'est le cas, toujours utiliser cette formule et si le
résultat affiché dans la cellule n'est pas un nombre entier,
utiliser =TRONQUE(cellule).
J'ai pensé à =TRONQUE(TRONQUE(A1;15)).
Avec cette formule, si j'entre un nombre en A1 qui n'est
pas le résultat d'un calcul, c'est correct.
Par contre si A1 contient une formule, ça ne fonctionne pas
toujours. Exemple : A1 contient la formule `*(1,15-1).
Et curieusement, avec `*0,15 ça va !
Si j'entre 1,99999999999999999 en A1, 2 est affiché mais
le résultat de =TRONQUE(TRONQUE(A1;15)) est correct : 1.
Une fonction personnalisée, peut-être ?
Erre-je et que faire ?

Serge




"bricolo_chris" a écrit dans le message de news:

On 23 fév, 16:05, Régis wrote:
Hello Chris,

Pas sûr que l'on puisse parler de bug en l'occurence mais plutôt de finesse
du calcul. Si tu assignes à la fonction TRONQUE une limite décimale
supérieure à 13 =TRONQUE(60*(1,15-1);14) par exemple tu obtiendra bien
9,0000000000000 car 60*(1,15-1) étendu à sa 13éme décimale donne
8,99999999999999, donc, un entier de 8, CQFD.
Pas encore d'inquiétude question fiabilité de calcul à ce stade :o)

Bien à toi,




Bonjour à tous,

Je suis tombé sur un petit bug dans Excel. Je ne crois pas qu'il ait
déjà été signalé dans ce groupe.
Alors voilà:
`*(1,15-1) donne comme résultat 9, ce qui correct

maintenant:
=TRONQUE(60*(1,15-1)) donne comme résultat 8 !

Il est mignon, non ?

Par contre, ca ne me rassure pas sur la fiabilité des calculs dans
Excel...- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Bonjour Régis,

ok, j'avais remarqué aussi l'histoire de la limite décimale. Mais
mathématiquement 60*(1,15-1) est bien égal à 9 et pas 8,9999999999
Je ne vois pas pourquoi Excel tout d'un coup perd 0,0000000000000001
(pardon, je n'ai pas compté les zéros, mais tu vois ce que je veux
dire).

Cordialement.







Avatar
MichDenis
Ok pour la fonction personnalisée.... mais je ne sais pas ce
qu'elle apporte de plus que la suggestion que j'ai faite !


"garnote" a écrit dans le message de news:
ue56Q%
Salut Denis,

Voilà ce qui me paraît le plus sûr pour éviter
les binaires embûches et traiter avec courtoisie
de très gros nombres !

Function pe(x As Range) As Double
'Cette fonction calcule la partie entière d'un nombre.
Dim v As Double
v = x.Value
pe = Fix(Round(v, 14))
End Function

Qu'en penses-tu ?

Serge


"MichDenis" a écrit dans le message de news:

Les fameuses transformations du décimale au binaire et l'inverse ...

Il est possible cependant d'utiliser ceci :

=TRONQUE(ARRONDI(60*(1,15-1);9))

Le 9 étant arbitraire...



"garnote" a écrit dans le message de news:

Salut bricolo,

Moi aussi ça m'agace car si j'utilise le résultat obtenu
dans d'autres calculs, adieu la justesse des résultats.
Par contre =TRONQUE(calcul;15) semble correct.
Si c'est le cas, toujours utiliser cette formule et si le
résultat affiché dans la cellule n'est pas un nombre entier,
utiliser =TRONQUE(cellule).
J'ai pensé à =TRONQUE(TRONQUE(A1;15)).
Avec cette formule, si j'entre un nombre en A1 qui n'est
pas le résultat d'un calcul, c'est correct.
Par contre si A1 contient une formule, ça ne fonctionne pas
toujours. Exemple : A1 contient la formule `*(1,15-1).
Et curieusement, avec `*0,15 ça va !
Si j'entre 1,99999999999999999 en A1, 2 est affiché mais
le résultat de =TRONQUE(TRONQUE(A1;15)) est correct : 1.
Une fonction personnalisée, peut-être ?
Erre-je et que faire ?

Serge




"bricolo_chris" a écrit dans le message de news:

On 23 fév, 16:05, Régis wrote:
Hello Chris,

Pas sûr que l'on puisse parler de bug en l'occurence mais plutôt de finesse
du calcul. Si tu assignes à la fonction TRONQUE une limite décimale
supérieure à 13 =TRONQUE(60*(1,15-1);14) par exemple tu obtiendra bien
9,0000000000000 car 60*(1,15-1) étendu à sa 13éme décimale donne
8,99999999999999, donc, un entier de 8, CQFD.
Pas encore d'inquiétude question fiabilité de calcul à ce stade :o)

Bien à toi,




Bonjour à tous,

Je suis tombé sur un petit bug dans Excel. Je ne crois pas qu'il ait
déjà été signalé dans ce groupe.
Alors voilà:
`*(1,15-1) donne comme résultat 9, ce qui correct

maintenant:
=TRONQUE(60*(1,15-1)) donne comme résultat 8 !

Il est mignon, non ?

Par contre, ca ne me rassure pas sur la fiabilité des calculs dans
Excel...- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Bonjour Régis,

ok, j'avais remarqué aussi l'histoire de la limite décimale. Mais
mathématiquement 60*(1,15-1) est bien égal à 9 et pas 8,9999999999
Je ne vois pas pourquoi Excel tout d'un coup perd 0,0000000000000001
(pardon, je n'ai pas compté les zéros, mais tu vois ce que je veux
dire).

Cordialement.







Avatar
garnote
Salut Denis,

Ok pour la fonction personnalisée.... mais je ne sais pas ce
qu'elle apporte de plus que la suggestion que j'ai faite !
Plus simple d'entrer =pe(A1) que

=TRONQUE(ARRONDI(A1;14)).
C'est pour ajouter à ma banque de
fonctions mathématiques personnalisées.

Bonne soirée
Serge


"MichDenis" a écrit dans le message de news:
Ok pour la fonction personnalisée.... mais je ne sais pas ce
qu'elle apporte de plus que la suggestion que j'ai faite !


"garnote" a écrit dans le message de news:
ue56Q%
Salut Denis,

Voilà ce qui me paraît le plus sûr pour éviter
les binaires embûches et traiter avec courtoisie
de très gros nombres !

Function pe(x As Range) As Double
'Cette fonction calcule la partie entière d'un nombre.
Dim v As Double
v = x.Value
pe = Fix(Round(v, 14))
End Function

Qu'en penses-tu ?

Serge


"MichDenis" a écrit dans le message de news:

Les fameuses transformations du décimale au binaire et l'inverse ...

Il est possible cependant d'utiliser ceci :

=TRONQUE(ARRONDI(60*(1,15-1);9))

Le 9 étant arbitraire...



"garnote" a écrit dans le message de news:

Salut bricolo,

Moi aussi ça m'agace car si j'utilise le résultat obtenu
dans d'autres calculs, adieu la justesse des résultats.
Par contre =TRONQUE(calcul;15) semble correct.
Si c'est le cas, toujours utiliser cette formule et si le
résultat affiché dans la cellule n'est pas un nombre entier,
utiliser =TRONQUE(cellule).
J'ai pensé à =TRONQUE(TRONQUE(A1;15)).
Avec cette formule, si j'entre un nombre en A1 qui n'est
pas le résultat d'un calcul, c'est correct.
Par contre si A1 contient une formule, ça ne fonctionne pas
toujours. Exemple : A1 contient la formule `*(1,15-1).
Et curieusement, avec `*0,15 ça va !
Si j'entre 1,99999999999999999 en A1, 2 est affiché mais
le résultat de =TRONQUE(TRONQUE(A1;15)) est correct : 1.
Une fonction personnalisée, peut-être ?
Erre-je et que faire ?

Serge




"bricolo_chris" a écrit dans le message de news:

On 23 fév, 16:05, Régis wrote:
Hello Chris,

Pas sûr que l'on puisse parler de bug en l'occurence mais plutôt de finesse
du calcul. Si tu assignes à la fonction TRONQUE une limite décimale
supérieure à 13 =TRONQUE(60*(1,15-1);14) par exemple tu obtiendra bien
9,0000000000000 car 60*(1,15-1) étendu à sa 13éme décimale donne
8,99999999999999, donc, un entier de 8, CQFD.
Pas encore d'inquiétude question fiabilité de calcul à ce stade :o)

Bien à toi,




Bonjour à tous,

Je suis tombé sur un petit bug dans Excel. Je ne crois pas qu'il ait
déjà été signalé dans ce groupe.
Alors voilà:
`*(1,15-1) donne comme résultat 9, ce qui correct

maintenant:
=TRONQUE(60*(1,15-1)) donne comme résultat 8 !

Il est mignon, non ?

Par contre, ca ne me rassure pas sur la fiabilité des calculs dans
Excel...- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Bonjour Régis,

ok, j'avais remarqué aussi l'histoire de la limite décimale. Mais
mathématiquement 60*(1,15-1) est bien égal à 9 et pas 8,9999999999
Je ne vois pas pourquoi Excel tout d'un coup perd 0,0000000000000001
(pardon, je n'ai pas compté les zéros, mais tu vois ce que je veux
dire).

Cordialement.