Javascript简单的数学错误

时间:2011-09-01 20:16:27

标签: javascript math

我无法理解造成这种情况的原因,虽然数学从来都不是我的专业,所以任何帮助都会受到赞赏。我的简单等式分为两部分:

答案1)226 - [值]乘以.9

答案2)226 - [值]乘以.55

如果您使用40作为输入值,我的计算器会说:

答案1)226 - 40 = 186 * .9 = 167.4

答案2)226 - 40 = 186 * .55 = 102.3

但我的代码说:

答案1) 190

回答2) 204

我的代码:

HTML:
<input id="HR"size="4" value="" /><span id="number"></span>
 Answer 1 <strong><span id="answer1"></span></strong><br>
 Answer 2 <strong><span id="answer2"></span></strong>
</p>

<a href="#" class='THR'>click to calculate</a>

Script:
 <script type="text/javascript">
     $('a.THR').click(function() {
     var value = parseInt( $( "#HR" ).val() );
     $( "#answer1" ).html( 226 - value * 0.9 );
     $( "#answer2" ).html( 226 - value * 0.55 );
     return false;
   });
 </script>

6 个答案:

答案 0 :(得分:6)

您忘记了操作顺序。乘法具有比加法/减法更高的优先级。在您的226-value

周围加上括号
 $( "#answer1" ).html( (226 - value) * 0.9 );
 $( "#answer2" ).html( (226 - value) * 0.55 );

重读你的问题,我不确定你想要的结果到底是什么。如果你想先进行乘法,然后再进行减法,你不需要括号,尽管写226 - (value * 0.9)以使其清楚可能会有所帮助。您的计算器上发生的事情是您输入226 - value然后将该结果乘以您的十进制数。因此,上面的代码(226 - value) * 0.9代表您的输入。从最终用户的角度来描述你想要做什么可能有助于确定你的括号去哪里。

答案 1 :(得分:5)

括号:你需要它们。

 $( "#answer1" ).html( (226 - value) * 0.9 );
 $( "#answer2" ).html( (226 - value) * 0.55 );

答案 2 :(得分:3)

乘法优先于减法 因此,表达式将被解释为:

答案1) 226 - ([值]乘以.9)
例如:

226 - (40 *0.9) = 226 - 36 = 190

答案2) 226 - ([值]乘以.55)
例如:

226 - (40 * .55) = 226 - 22 = 204

答案 3 :(得分:1)

您的代码符合标准操作顺序:

  • 圆括号,
  • Exponeniation,
  • Multiplcation /司
  • 加/减

......但你不是。将您的等式加括号以将顺序更改为您想要的顺序。

答案 4 :(得分:1)

这只是一个操作顺序问题(与jquery无关)。在加/减之前执行乘法/除法。所以:

226 - 40*.9 = 226 - 36 = 190

答案 5 :(得分:1)

在数学中,乘法优先于加法和减法。使用括号来澄清:

$( "#answer1" ).html( (226 - value) * 0.9 );
$( "#answer2" ).html( (226 - value) * 0.55 );