【问题标题】:Jquery/Javascript Math: Why are these two 1 line math problems not giving the same answer?Jquery/Javascript Math:为什么这两个 1 行数学问题没有给出相同的答案?
【发布时间】:2010-10-19 08:41:50
【问题描述】:

这两个数学题不应该给出相同的答案吗?括号/括号先完成,对吗?所以它应该将它们全部相加,然后除以 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;

【问题讨论】:

    标签: javascript jquery math parentheses


    【解决方案1】:
    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】:

      我已经分解了公式,所以你可以看到:

      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 除,而在第二种情况下,这就是为什么它们不会给出相同的结果

      【讨论】:

        【解决方案3】:

        在第一个部分中,您永远不会将第一部分除以 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

        【讨论】:

          猜你喜欢
          • 2021-11-18
          • 1970-01-01
          • 2013-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多