| Encore un mystère, mais avec les opérations | |
|
|
Auteur | Message |
---|
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Encore un mystère, mais avec les opérations Lun 22 Juil 2013 - 12:48 | |
| Prenez le code suivant : - Code:
-
print 17/26*100 : rem --> 0.00653846153846154 print (17/26)*100 : rem --> 65.3846153846154
(je vous ai mis le résultat en rem) Moi, je trouve ça bizarre, pas vous ? J'avais toujours appris que les multiplications et les divisions étaient commutatives ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Encore un mystère, mais avec les opérations Lun 22 Juil 2013 - 14:14 | |
| C'est un bug. La multiplication est bien commutative, mais la division ne l'est pas. Or, dans ce cas, on s'attend intuitivement que Panoramic interprète l'expression de gauche à droite, en présence d'opérateurs de même priorité. Mais ce n'est pas le cas. Panoramic semble exécuter de droite à gauche. Mais même ça, ce n'est pas vrai. La preuve: - Code:
-
print 17/26*100 : rem --> 0.00653846153846154 print (17/26)*100 : rem --> 65.3846153846154
print 17/26 : rem --> 0.653846153846154 print 17/2600 : rem --> 0.00653846153846154 print 17/2600*10 : rem --> 0.000653846153846154 print 17/26*100*10 : rem --> 0.0653846153846154
Je pense que c'est ) Jack de jouer... | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Encore un mystère, mais avec les opérations Lun 22 Juil 2013 - 18:07 | |
| D’une manière générale : 1. les calculs contenus entre parenthèses sont prioritaires sur les calculs situés en dehors de ces parenthèses. 2. les exposants sont prioritaires sur les multiplications, divisions, additions et soustractions; 3. les multiplications et divisions sont prioritaires sur les additions et soustractions. On commence par les parenthèses; elles indiquent les calculs à effectuer en premier. On commence par les parenthèses les plus internes. En l'absence de parenthèses, on effectue les calculs dans l'ordre suivant: -les puissances -les multiplications (et les divisions) -les additions (et les soustractions) Pour les opérateurs de même priorité, on effectue le calcul de gauche à droite (comme on le lit !) Priorités classées par ordre décroissant; les opérateurs sur une même ligne ayant une priorité égale (on évalue alors de gauche à droite). () + - not unairepower exponentiation* / div mod and multiplicatif+ - or additif= <> < <= >= > relationPersonnellement comment je m’y prends :Comme la priorité des opérations semble varier suivant le langage utilisé, donc, pour ne pas me poser trop de questions, je place des parenthèses là où il faut pour fixer la priorité telle que je la souhaite.Et le code n'en sera que plus lisible ! | |
|
| |
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Encore un mystère, mais avec les opérations Lun 22 Juil 2013 - 18:49 | |
| Dans le doute, il vaut mieux mettre des parenthèses car un calcul entre parenthèses s'effectue en priorité.
Pour évaluer une expression, PANORAMIC fait des cycles jusqu'à ce qu'il n'y ait plus rien à évaluer. Lors d'un cycle, il évalue dans l'ordre : la multiplication la division l'addition la soustraction les fonctions numériques retournant un nombre les fonctions numérique retournant une chaine les fonctions sur les chaines de caractères les variables indicées à 1 dimension les variables indicées à 2 dimensions les nombres entre parenthèses la concaténation
Je préciserai cela dans la documentation. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Encore un mystère, mais avec les opérations Lun 22 Juil 2013 - 21:17 | |
| Ah, ça, c'est une précision intéressante ! En effet, ainsi que l'a si bien dit Papydall, cela diffère un peu de l'ordre "habituel" (si j'ose dire), car cela induit une priorité pus grande à la multiplication qu'à la division, pour ne relever que cela. Il faudra donc prendre l'habitude de placer des parenthèses pour imposer l'ordre d'évaluation. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Encore un mystère, mais avec les opérations Mar 23 Juil 2013 - 0:38 | |
| En toute rigueur, la division n’est en fait qu’une multiplication, au même titre que la soustraction n’est qu’une addition ! En effet, diviser A par B est équivalent à multiplier A par l’inverse de B : A / B = A * (1/B) Soustraire B de A est équivalent à additionner A et l’opposé de B : A - B = A + (-B). Donc, multiplication et division doivent avoir la même priorité . De même, addition et soustraction doivent avoir la même priorité .
Panoramic se comporte légèrement différent (comme l’a si bien précisé Jack), alors, comme je l’écrivais ci-haut: placez des parenthèses là où il faut pour fixer la priorité telle que vous la souhaiter. Ainsi vous gagnez sur deux coups : 1/ Vous éliminez le doute. 2/ Votre code n’est sera que plus lisible.
Pour conclure : A chacun sa méthode. | |
|
| |
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mer 24 Juil 2013 - 16:44 | |
| Ah, voilà !!! Mathématiques et informatique sont deux choses différentes ! (qui a dit que c'était les mamelles de la France ?) | |
|
| |
Contenu sponsorisé
| Sujet: Re: Encore un mystère, mais avec les opérations | |
| |
|
| |
| Encore un mystère, mais avec les opérations | |
|