舍入小数

时间:2014-01-29 04:24:37

标签: javascript math

尝试自学一些东西,只能走到一半。我有一些代码为我做了一些数学运算但却错误地回答了因为我无法将其舍入到小数点后两位。我希望有人可以提供帮助。

示例:将34放在“sec”输入中,“decimal”将读取.57

以下是Fiddle的链接。 http://jsfiddle.net/dgtlkvn/mHsgt/

这是javascript,因为我知道问题出在哪里。

$(document).ready (
function() {
  $('#min').keyup(calculate);
  $('#sec').keyup(calculate);
  $('#dec').keyup(calculate);
  $('#dis').keyup(calculate);
  $('#kilo').keyup(calculate);
  $('#speed').keyup(calculate);

});

function calculate(e) {
  $('#dec').val($('#sec').val() / 60);
  $('#dis').val($('#min').val() + $('#dec').val());
  $('#kilo').val(60 / $('#dis').val());
}

2 个答案:

答案 0 :(得分:1)

表单控件的值始终以字符串形式返回。大多数算术运算会将它们转换为数字而不是+,如果任何参数是一个字符串,它将进行连接,所以

 $('#dis').val($('#min').val() + $('#dec').val());

连接,而不是添加。

要将数字舍入到固定数量的位置,请使用 toFixed 。示例代码(我认为放弃jQuery更简单,更高效):

function calculate(evt) {
  var el = evt.target || evt.srcElement;
  var f = el.form;

  if (!f) return;

  // Division converts strings to numbers
  var dec = f.sec.value / 60;

  // Use unary + to convert strings to numbers for addition
  var dis = +f.min.value + +f.dec.value;

  // Dispaly values to 2 decimal places (or round if preferred)
  f.dec.value = dec.toFixed(2);
  f.dis.value = dis.toFixed(2);
  f.kilo.value = (60 / dis).toFixed(2);
}

一些HTML:

<form id="f0" onkeyup="calculate(event);">
  <table>
    <tr><td>Min:<td><input type="text" name="min">
    <tr><td>Sec:<td><input type="text" name="sec">
    <tr><td>Dec:<td><input type="text" name="dec">
    <tr><td>Dis:<td><input type="text" name="dis">
    <tr><td>Km:<td><input type="text" name="kilo">
    <tr><td>Speed:<td><input type="text" name="speed">
  </table>
</form>

答案 1 :(得分:0)

试试这个

$('#dec').val(Math.floor(($('#sec').val() / 60) * 100) / 100);

http://jsfiddle.net/mHsgt/1/