0

您好,我正在尝试对三个值进行简单计算: a + b * c但总数错误。如果a是 10 并且b是 10,它将是 20 乘以c2.4。我总共应该得到 48 个。目前获得2424。

function compute() {
  var a = $('#a').val();
  var b = $('#b').val();
  var c = $('#c').val();
  var total = (a + b) * c;
  $('#total').val(total);
}

$('#a, #b, #c').change(compute);
4

6 回答 6

1

基础数学:乘法优先于加法。

因此,在您的代码中,将 a 添加到 b*c 的结果中。

采用 :

var total = (a + b) * c;
于 2012-10-24T11:27:51.127 回答
1

a + b * c 被评估为a + (b * c)

你需要的是(a + b) * c

优先顺序:括号>除法>乘法>加法>减法


在你的问题中,你说你得到 1024。得到 1024 是不可能的。你应该得到 34。(在别处检查你的计算)

a + (b * c) = 10 + (10 * 2.4) = 34
于 2012-10-24T11:28:11.853 回答
1

如果要在乘法之前将 a 添加到 b,则需要使用括号。

这是因为乘法运算符的优先级高于加法。

(a + b) * c

于 2012-10-24T11:29:05.383 回答
0
$(document).ready(function() {
   function compute() { 
          var a = $('#a').val();
          var b = $('#b').val();
          var c = $('#c').val();
          var total = (parseInt(a,10) + parseInt(b,10)) * parseFloat(c); alert(total);
          $('#total').val(total);
        }

  $('#a, #b, #c').change(compute);

 });

检查演示

于 2012-10-24T11:30:13.820 回答
0

在解析以下值后尝试: var total = (parseFloat(a) + parseFloat(b)) * parseFloat(c);

于 2012-10-24T11:31:05.600 回答
-2

你的变量是字符串。使用 parseFloat 函数。

"10" + "10"*"2.4" = "10"+ 24 = "1024"
于 2012-10-24T11:29:12.980 回答