Priorité des opérateurs dans une formule

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
cpoizat
Fraîchement OOthentifié
Messages : 3
Inscription : 24 mars 2019 18:20

Priorité des opérateurs dans une formule

Message par cpoizat »

Bonjour,
J'ai remarqué un bug dans Calc.
Quand dans une cellule on saisit la formule =-3^2+1 on obtient 10 ce qui est faux car -3²+1 = -8. De plus, si on saisit la formule =1-3^2 alors là on obtient le bon calcul c'est à dire -8
Ce phénomène existe dans libreOffice mais aussi dans Excel 2007 et 365 que j'ai pu tester.
l'interpréteur des formules doit donc donc être implémenté de la même manière erronée que dans Calc.

Je n'ai pas trouvé de mention de ce bug mais je suis nouveau dans ce forum.

Cordialement
Dernière modification par Oukcha le 25 mars 2019 07:57, modifié 1 fois.
Raison : Terme "bogue" supprimé, en attente d’un balisage "Issue"
OpenOffice 4 sous Windows 10 64bits
Avatar de l’utilisateur
yclik
HédOOniste
HédOOniste
Messages : 1666
Inscription : 15 déc. 2010 08:33

Re: bogue priorité des opérateurs dans une formule

Message par yclik »

Bonjour
pour moi
-3 au carré <=>-3x-3 = +9
OpenOffice 4.1.14 sous Windows 10
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: bogue priorité des opérateurs dans une formule

Message par Jeff »

Bonjour et bienvenue,

Il me semble pourtant que -3 x -3 = 9 :wink:

Il faudrait un exposant impair pour un résultat négatif :
AOO_forum.png
A +
 Ajout : Hello yclik 
 Ajout : 2 :Wikipédia semble du même avis : https://fr.wikipedia.org/wiki/Puissance ... _du_nombre 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
cpoizat
Fraîchement OOthentifié
Messages : 3
Inscription : 24 mars 2019 18:20

Re: bogue priorité des opérateurs dans une formule

Message par cpoizat »

Non, le bug est plus profond : si dans C1 on met =-A1^B1+1 on va obtenir C1 = 10 si A1 = 3 et B1 = 2 ce qui est faux ! (le bon résultat est -9+1 = -8 !)
Si on change de place le 1, c'est à dire dans C1 on met =1-A1^B1 alors on obtient bien -8
C'est un bug de priorité des opérateurs mais en fait je viens de voir que Excel (qui a le même bug) signale que le calcul se fait de gauche à droite et que le - est prioritaire sur la puissance ^ mais que la soustraction - est après la puissance !.
C'est un choix mais c'est faux mathématiquement !
Je pensais que dans OpenOffice, il n'y avait pas les mêmes bugs mais peut-être, est-ce pour être compatible avec le fonctionnement d'Excel !
il faut juste le savoir et ne pas penser que les tableurs Excel ou OpenOffice respectent toutes les règles algébriques : -x² sera toujours négatif dans les mathématiques quelle que soit la valeur réelle x non nulle et bien pas dans Excel ou OpenOffice !
(LibreOffice a le même bug !)
Dernière modification par cpoizat le 24 mars 2019 19:17, modifié 1 fois.
OpenOffice 4 sous Windows 10 64bits
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: bogue priorité des opérateurs dans une formule

Message par Jeff »

J’ai fait un ajout dans mon message précédant :
https://fr.wikipedia.org/wiki/Puissance ... _du_nombre
Il n'y a pas de rapport direct entre le signe du nombre et le signe du résultat. Celui-ci dépend de la parité de l'exposant.

Un nombre élevé à une puissance paire donne un résultat positif : si n est pair, alors (–a)n = an.

Un nombre élevé à une puissance impaire donne un résultat du même signe : si n est impair, alors (–a)n = –an.
Mais je ne suis pas mathématicien :mrgreen:
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: bogue priorité des opérateurs dans une formule

Message par Jean-Louis Cadeillan »

Bonsoir,
Je pense que tu confonds signe et opérateur, dans -3 ou -A1, - est un signe, attaché au nombre qui le suit ; quand deux nombres sont en jeu, alors - est un opérateur, celui de la soustraction.
Cordialement,
Jean-Louis
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
cpoizat
Fraîchement OOthentifié
Messages : 3
Inscription : 24 mars 2019 18:20

Re: bogue priorité des opérateurs dans une formule

Message par cpoizat »

Le problème est qu'il n'y a pas de parenthèse ! donc -3² est différent de (-3)² , j'espère que la différence entre ces deux calculs est bien visible sinon ...
les puissances paire et impaire n'interviennent pas dans le bug qui relève de l'interpréteur de formule utilisé (en terme de programmation) dans les tableurs mentionnés.

Voici un problème qui relève indirectement des puissances paires ou impaires
(-8)^(1/3) = -2 car (-2)*(-2)*(-2) = -8 ! pourtant OpenOffice ou excel ne savent pas le traiter. En revanche ils savent traiter 8^(1/3) et trouvent 2 ! il y a donc encore des axes de progression pour ces outils.

Mon propos était juste de signaler que OpenOffice et Excel peuvent se tromper dans la différence entre le signe - et l'opération soustraction - et que cela peut provoquer des faux résultats surtout si vous voulez implémenter une simple fonction du second degré du style : =-A1^2+5*A1+1 par exemple c'est à dire -x²+5x+1, il faudra soit l'écrire =1-A1^2+5*A1 ou =-1*A1^2+5*A1+1 pour obtenir le bon résultat
c'est juste bon à savoir et cela déroute des élèves de première !
OpenOffice 4 sous Windows 10 64bits
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5753
Inscription : 02 janv. 2009 23:56

Re: bogue priorité des opérateurs dans une formule

Message par Jean-Louis Cadeillan »

Voir ici
cpoizat a écrit :(-8)^(1/3) = -2 car (-2)*(-2)*(-2) = -8 ! pourtant OpenOffice ou excel ne savent pas le traiter
LibO, si.
Cordialement,
Jean-Louis
LibO 7.6.6.3 (x64 avec Java 1.8.0_411) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1