JeuWeb - Crée ton jeu par navigateur
attention à la difference entre ^ et pow() - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : attention à la difference entre ^ et pow() (/showthread.php?tid=4828)

Pages : 1 2


attention à la difference entre ^ et pow() - php_addict - 18-05-2010

bonjour

un petit post pour eviter à d'autres de galérer:

je voulais 12 puissance 5 en php:

mais je faisais 12^5 au lieu de pow(12,5)

exmpl:

Code :
echo 12^5 ;        // resultat: 9
echo pow(12,5) ;   // resultat: 248832

erreure stupide...


RE: attention à la difference entre ^ et pow() - Mycroft - 18-05-2010

Et "^", c'est un XOR c'est à dire un "OU exclusif" en binaire.

C'est à dire qu'on choisit les "1" dans A ou dans B, mais on laisse à 0 si les deux sont à "1" (ou les 2 à "0" comme pour un OR normal).

12 ^ 5
= "1100" ^ "0101" en notation binaire
= "1001" suivant la règle énoncé au dessus
= 9 en notation décimale

Ca peut servir au cas où on fait un test du style:

Après une passe d'arme,
si A ou B est mort : traitement spécial
(mais on fait rien si ils sont tous les deux morts ou aucun n'est mort). Smile


RE: attention à la difference entre ^ et pow() - Argorate - 18-05-2010

effectivement, ne jamais utiliser "^" pour les puissances Wink


RE: attention à la difference entre ^ et pow() - Sephi-Chan - 18-05-2010

Par curiosité : qu'est-ce qui t'a fait penser que ^ était l'opérateur de puissance ?


Sephi-Chan


RE: attention à la difference entre ^ et pow() - php_addict - 18-05-2010

(18-05-2010, 04:16 PM)Sephi-Chan a écrit : Par curiosité : qu'est-ce qui t'a fait penser que ^ était l'opérateur de puissance ?


Sephi-Chan


c'est bien comme ca que l'on fait en math non ?

de plus sur http://www.php.net/manual/fr/function.gmp-pow.php cela prête à confusion:

Citation : Valeurs de retour

Le nouveau nombre, sous la forme d'un nombre GMP. Dans le cas de 0^0, gmp_pow() retourne 1.



RE: attention à la difference entre ^ et pow() - atra27 - 18-05-2010

Notation en math et sur les calculatrices non 3d peut être? :p

Je dois dire que je vient de corriger grâce a ça mon algo de calcul de distance entre 2 coordonnées!
Mais c'est bizarre car avec ^2 je tombait comme même sur le résultat attendu...

Un grand merci, peut être un futur bug de plus de corrigé...


RE: attention à la difference entre ^ et pow() - Argorate - 18-05-2010

(18-05-2010, 04:16 PM)Sephi-Chan a écrit : Par curiosité : qu'est-ce qui t'a fait penser que ^ était l'opérateur de puissance ?


Sephi-Chan
Sur n'importe calculette (y compris la calculette windows ou encore celle de mon portable) utilise se symbole pour les puissance^^

je m'étais fais avoir aussi la première fois Big Grin


RE: attention à la difference entre ^ et pow() - Sephi-Chan - 18-05-2010

C'est bien la réponse que j'attendais.
Par contre, ça fait un peu peur pour la qualité d'apprentissage du langage. :p

En Ruby, on utilise ** (qui est — comme tous les opérateurs — une méthode).


3 ** 2 # => 9
3.**(2) # => 9


Sephi-Chan


RE: attention à la difference entre ^ et pow() - php_addict - 18-05-2010

(18-05-2010, 04:31 PM)atra27 a écrit : Mais c'est bizarre car avec ^2 je tombait comme même sur le résultat attendu...

veinard Smile

bon, mon erreur aura servie à quelqu'un...


RE: attention à la difference entre ^ et pow() - atra27 - 18-05-2010

(18-05-2010, 08:46 PM)php_addict a écrit :
(18-05-2010, 04:31 PM)atra27 a écrit : Mais c'est bizarre car avec ^2 je tombait comme même sur le résultat attendu...

veinard Smile

Avant:
Code PHP :
<?php 
$distance
=intval(sqrt(($stationinfoarriv['stationpos_x']-$stationinfodepart['stationpos_x'])^2+($stationinfoarriv['stationpos_y']-$stationinfodepart['stationpos_y'])^2)*1000);

Aprés:
Code PHP :
<?php 
$distance
=intval(sqrt(pow(($stationinfoarriv['stationpos_x']-$stationinfodepart['stationpos_x']))+pow(($stationinfoarriv['stationpos_y']-$stationinfodepart['stationpos_y'])))*1000);

Je sais pas pourquoi mais le résultat était logique... j'ai pas vérifié avec des grands nombres mais il était cohérent avec le résultat attendu...