繁体   English   中英

舍入小数

[英]Rounding Decimals

试图教自己一些东西,只能取得一半。 我有一些代码为我做一些数学运算,但是它抛出了错误的答案,因为我无法将其舍入到小数点后两位。 我希望有人能提供帮助。

示例:在“ sec”输入中输入34,“ decimal”将显示为.57

这是小提琴上的链接。 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());
}

表单控件的值始终以字符串形式返回。 大多数算术运算会将其转换为数字,但不会转换为+ ,如果任何参数为字符串,则+会进行连接,因此

 $('#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>

尝试这个

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM