2010-10-19 4 views
1

Ces deux problèmes mathématiques ne devraient-ils pas donner la même réponse? Les parenthèses/parenthèses sont faites en premier, non? il faut donc les additionner tous, puis diviser par 2, puis soustraire 10. La deuxième réponse ci-dessous est celle qui me donne la valeur correcte dont j'ai besoin, l'autre donne une valeur qui est loin d'être atteinte.Jquery/Javascript Math: Pourquoi ces deux problèmes de mathématiques en 1 ligne ne donnent-ils pas la même réponse?

var pleft = $(this).offset().left + ($(this).width() /2) - ($("#question-wrapper").width()/2) - 10; 

    var pleft = (($(this).offset().left + $(this).width() + $("#question-wrapper").width())/2) - 10; 

Répondre

5
var x = $(this).offset().left; 
var y = $(this).width(); 
var z = $("#question-wrapper"); 

var pleft = x + (y/2) - (z/2) - 10 

var pleft = ((x + y + z)/2) - 10 

Espérons que cela aide à éclaircir la différence.

0

Dans la première vous ne divisez jamais la première partie avec 2. C'est pourquoi c'est éteint.

var pleft = ($(this).offset().left/2) + ($(this).width() /2) - ($("#question-wrapper").width()/2) - 10; 

Supports/parenthèses sont faites d'abord, non?

Oui, mais ils ne sont pas complètement équivalents dans vos exemples.


Qu'est-ce que votre code a:

  1. a + b/2 - c/2, puis soustrayez 10
  2. (a + b - c)/2, puis soustrayez 10
2

J'ai décomposé les formules afin que vous puissiez voir.

var pleft = $(this).offset().left <------------------- not divided 
+ ($(this).width() /2) 
- ($("#question-wrapper").width()/2) 
- 10; 


var pleft = (
(
    $(this).offset().left <--------------------- divided 
    + $(this).width() 
    + $("#question-wrapper").width() 
) 
/2) 
- 10; 

Dans le premier cas, $ (this) .Offset() gauche n'est pas divisé par 2 dans le second cas, il est, c'est pourquoi ils ne donnent pas le même résultat

Questions connexes