Javascript计算无法正常工作

时间:2012-10-24 11:25:46

标签: javascript

您好我正在尝试对三个值进行简单的计算:a + b * c但总错误。如果a为10且b为10,则将乘以c乘以2,即2.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);

6 个答案:

答案 0 :(得分:1)

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

所以在你的代码中,a被添加到b * c的结果中。

使用:

var total = (a + b) * c;

答案 1 :(得分:1)

a + b * c正在评估为a + (b * c)

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

优先顺序:括号>分部>乘法>添加>减法


在你的问题中,你说你得到1024.获得1024 不可能。你应该得到34.(在其他地方检查你的计算)

a + (b * c) = 10 + (10 * 2.4) = 34

答案 2 :(得分:1)

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

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

(a + b)* c

答案 3 :(得分: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);

 });

Check DEMO

答案 4 :(得分:0)

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

答案 5 :(得分:-2)

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

"10" + "10"*"2.4" = "10"+ 24 = "1024"