Jquery / Javascript Math: Почему эти две однолинейные математические задачи не дают одинакового ответа? - PullRequest
1 голос
/ 19 октября 2010

Разве эти две математические задачи не должны дать один и тот же ответ?Скобки / скобки делаются в первую очередь, верно?поэтому он должен сложить их все, затем разделить на 2, затем вычесть 10. Второй ответ ниже - это тот, который дает мне правильное значение, которое мне нужно, другой дает значение, которое еще далеко.

    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;

Ответы [ 3 ]

5 голосов
/ 19 октября 2010
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

Надеюсь, это поможет устранить разницу.

2 голосов
/ 19 октября 2010

Я разложил формулы, чтобы вы могли видеть:

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;

В первом случае $ (this) .offset (). Left не делится на 2, тогда как во втором случае этопоэтому они не дают одинакового результата

0 голосов
/ 19 октября 2010

В первой вы никогда не делите первую часть на 2. Поэтому она выключена.

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

Сначала ставятся скобки / скобки, верно?

Да, но они не полностью эквивалентны в ваших примерах.


Что сделал ваш код:

  1. a + b / 2 - c / 2, затем вычтите 10
  2. (a + b - c) / 2, затем вычтите 10
...