【问题标题】:Any solution for negativ result after subtraction in JQueryJQuery中减法后负结果的任何解决方案
【发布时间】:2017-11-18 20:47:01
【问题描述】:

我在编码方面相对较新,但遇到以下问题:我有 13 个数字输入,它们都是浮点数,在用户输入后自动出现 (class=“autoValue”)。它们必须加在一起。然后结果必须用于 Math.exp 函数。 我的问题是其中一个数字是负数(-5),虽然减法是 JQuery 中的有效操作,但最终结果几乎总是负数(该函数在每次用户输入后触发)。所以我得到了 NaN 结果...

  • 如何解决这个问题?
  • 我做错数学了吗?
  • 我的代码可以吗?
  • 指数部分对吗?

很遗憾,我在网上找到的所有解决方案都不能解决我的问题,所以我需要一些帮助。 编辑:我添加了 HTML 的一部分(完整的代码太长了)。提前致谢!

//get gender
$('input').click(function(e){
if ($("#demo09a").is(':checked')){
$("#2").val(0.65);
}
else {
$("#2").val(0);
}
})


 function getScore() {
  var sum = 0;
  $(".autoValue").each(function() {
    sum += +this.value;
  });
  console.log("sum:" + sum)
  var ex = Math.exp(sum);
  console.log("ex:" + ex)
  var result = ex / (1 + ex);
  var finalResult = result.toFixed(2);
  if (isNaN(finalResult)) finalResult = 0;
  $('#result').val((finalResult));
}

$(document).ready(function() {
  $('.trigger').click(function(event) {
    getScore();
  });
  $('.triggeriii').keyup(function(event) {
    getScore();
  });
  $('.triggeriii').blur(function(event) {
    getScore();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="result" type=“text” readonly="true">Result <br />
<input id="1" class="autoValue" type=“text” value="-3.0877706">Field 1 <br \>
<input id="demo09a" class="trigger" type="radio" name="gender" value="1">female
<input id="demo09b" class="trigger" type="radio" name="gender" value="0">male<br />
<input id="2" class="autoValue" type=“text” name="2" readonly="true">Field 2

【问题讨论】:

  • 您能否提供一份数字列表,以便我们进行检查?
  • 如果你能添加你的 HTML 的一部分,那就太好了!
  • @edkeveked 我会尝试简化它然后添加它。只是需要一些时间。
  • @edkeveked 添加了 html 部分。所有 13 个字段基本相同 - 单选按钮检查 -> 将值分配给一个字段 -> 该字段用于进一步计算。问题 - 字段 1 为负数,结果为负数,然后代码返回 NaN...如何处理?
  • exp函数是从R到R,不需要做abs

标签: javascript jquery math subtraction negative-number


【解决方案1】:

您的代码正在运行。我在输入 field1 中使用了不同的负数(-5、-4),它起作用了。 也许您正在代码中进行其他一些可能导致您的问题的计算。给定您的代码,在 field1 中输入,我们有相同的输出,独立于检查 malefemale

//get gender
function triggerComputation(){
$('input').click(function(e){
if ($("#demo09a").is(':checked')){
$("#2").val(0.65);
}
else {
$("#2").val(0);
}
})

getScore()
}



 function getScore() {
  var sum = 0;
  $(".autoValue").each(function() {
    sum += +this.value;
  });
  console.log("sum:" + sum)
  var ex = Math.exp(sum);
  console.log("ex:" + ex)
  var result = ex / (1 + ex);
  console.log("result:"+result);
  var finalResult = result.toFixed(2);
  if (isNaN(finalResult)) finalResult = 0;
  $('#result').val((finalResult));
}

$(document).ready(function() {
  $('.trigger').click(function(event) {
    getScore();
  });
  $('.triggeriii').keyup(function(event) {
    getScore();
  });
  $('.triggeriii').blur(function(event) {
    getScore();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="result" type=“text” readonly="true">Result <br />
<input id="1" class="autoValue" type=“text” value="-3.0877706">Field 1 <br \>
<input id="demo09a" class="trigger" type="radio" name="gender" value="1">female
<input id="demo09b" class="trigger" type="radio" name="gender" value="0">male<br />
<input id="2" class="autoValue" type=“text” name="2" readonly="true">Field 2

<button onclick="triggerComputation()">compute</button>

【讨论】:

  • @Pussyfer,你能给我一个输入和你期望的输出吗?
  • 谢谢伙计!我从头到尾检查了我的代码,发现有一个拼写错误——它是“字段 1”中的“破折号”而不是“减号”,这就是代码返回 NaN 的原因......感谢您帮助我解决了这个问题.
  • @Pussyfer,太好了!
【解决方案2】:

使用 JavaScript abs() 方法

绝对值:Math.abs(-3.0877706);

结果:3.0877706

【讨论】:

  • 我需要结果原样 - 负或正 - 因为结果随后用于 Math.exp()。
猜你喜欢
  • 1970-01-01
  • 2021-05-25
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
相关资源
最近更新 更多