Javascript计算中带小数的变量

时间:2017-12-08 14:04:08

标签: javascript function

我已经制作了这个简单的形式,从高度和重量变量计算BMI。它适用于我分别向高度和权重变量插入整数,但不幸的是,当我插入十进制数字时,它不会按照它应该的方式工作。

有关解决此问题的任何想法吗?

function Calculate() {
  var manWeight = document.getElementById('manWeight').value;
  var manHeight = document.getElementById('manHeight').value;

  document.getElementById('manBMI').value = parseInt(document.getElementById('manWeight').value) / Math.pow(parseInt(document.getElementById('manHeight').value), 2);
  
}
<label for="manWeight">Weight: *</label>
  <input type="text" name="manWeight" size="35" id="manWeight" required autocomplete="off">
  <br>

<label for="manHeight">Height: *</label>
  <input type="text" name="manHeight" size="35" id="manHeight" required autocomplete="off"> <br>

<label for="manBMI">BMI:</label>
  <input type="text" name="manBMI" size="35" id="manBMI" required disabled autocomplete="off">

<button type="button" id="calculator" name="calculator" onclick="Calculate();">Calculate</button>

1 个答案:

答案 0 :(得分:0)

计算最终值时,您不需要使用parseInt(value)。 parseInt将向下舍入任何可以传入的浮点数。

您可以使用Number(value)。哪个将解析浮点数。但如果输入无效字符,这将返回NaN。

您可以使用Number的输入类型来限制有效数字的输入。 (在支持的浏览器上)

function Calculate() {
  var manWeight = document.getElementById('manWeight').value;
  var manHeight = document.getElementById('manHeight').value;

  document.getElementById('manBMI').value = Number(document.getElementById('manWeight').value) / Math.pow(Number(document.getElementById('manHeight').value), 2);
  
}
<label for="manWeight">Weight: *</label>
  <input type="number" name="manWeight" size="35" id="manWeight" required autocomplete="off">
  <br>

<label for="manHeight">Height: *</label>
  <input type="number" name="manHeight" size="35" id="manHeight" required autocomplete="off"> <br>

<label for="manBMI">BMI:</label>
  <input type="text" name="manBMI" size="35" id="manBMI" required disabled autocomplete="off">

<button type="button" id="calculator" name="calculator" onclick="Calculate();">Calculate</button>