2010-09-01 7 views
53

J'ai un code javascript:Javascript, Que fait l'opérateur^(caret)?

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#calcular').click(function() { 
    var altura2 = ((($('#ddl_altura').attr("value"))/100)^2); 
    var peso = $('#ddl_peso').attr("value"); 
    var resultado = Math.round(parseFloat(peso/altura2)*100)/100; 
    if (resultado > 0) { 
     $('#resultado').html(resultado); 
     $('#imc').show(); 
    }; 
    }); 
}); 
</script> 

Qu'est-ce que l'opérateur ^ (caret) signifie en Javascript?

Répondre

60

Le ^ operator est l'opérateur XOR bit à bit. À la case départ une valeur, utilisez Math.pow:

var altura2 = Math.pow($('#ddl_altura').attr("value")/100, 2); 
+3

dans une langue comme Javascript où les types sont tellement lâches qu'ils existent à peine, je suis presque surpris il y a même des opérations au niveau du bit :) – tenfour

+1

Je sais que la fonction pow (le Web Master Loreal semble non ...) mais je n'ai pas pu trouver l'opérateur^pour javascript. Merci pour le lien! – Torres

+1

Belle prise! Transféré à mon ami espagnol, qui a été un peu choqué. Remarqué comment par exemple 200cm/70kg vous donne un IMC de l'infini ;-) – Michael

4

Il s'agit de l'opérateur XOR bit à bit.

29

^ effectue OU exclusif (XOR), par exemple

6 est 110 en binaire, 3 est 011 en binaire, et

6^3, ce qui signifie 110 XOR 011 donne 101 (5).

110 since 0^0 => 0 
    011   0^1 => 1 
    ---   1^0 => 1 
    101   1^1 => 0 

Math.pow (x, 2) calcule mais pour le carré que vous utilisez mieux x*x comme Math.pow utilise logarithmes et vous obtenez plus d'erreurs d'approximation. (x² ~ exp(2.log(x)))

+0

Était pas au courant du fait de logarithme! Merci! (Il est donc probablement aussi plus rapide, n'est-ce pas?) – Michael

+0

Probablement plus rapide (alors que les processeurs mathématiques sont assez rapides pour les opérations simples 'doubles' - le journal sera probablement plus lent, tout en utilisant une optimisation de la série Taylor). –

+0

Je me demande pourquoi Math.pow n'utilise pas seulement x * x?! – Jowen

0

Son appelé XOR bit à bit. Laissez-moi vous expliquer:

Vous avez:

Decimal Binary 
0   0 
1   01 
2   10 
3   11 

Maintenant, nous voulons 3^2=? alors nous avons 11^10=?

11 
10 
--- 
01 
--- 

si 11^10=01 01 en décimal est 1.

On peut donc dire que 3^2=1;