0

こんにちは、3 つの値の簡単な計算をしようとしています a + b * cが、合計が間違っています。aが 10 でが 10 の場合b、20 を掛けるcと 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);
4

6 に答える 6

1

基本的な数学 : 掛け算は足し算よりも優先されます。

したがって、コードでは、 b*c の結果に a が追加されます。

使用する :

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 に答える