如何在 0.5 以外的其他阈值处舍入数字

How to round a number at other threshold than 0.5

我将如何更改此代码,以便可以将数字 7 替换为 7 到 16 之间的任何数字?

    var lvalue = $( ".leave-input" ).val();
    if (lvalue <=  7.29) {
      lvalue = roundDown();
    } else if (lvalue >= 7.3) {
      lvalue = roundUp();
    }

我正在尝试将用户输入的时间四舍五入到最接近的时间。我在使用时间时遇到了麻烦,所以现在只使用他们输入的数字。

澄清一下,而不是为每个数字(7、8、9 等)创建一个 if 语句。有没有办法重写当前代码,使“7”可以是 7 到 16 之间的任何数字?

你可以让它小于1,那么它应该适用于所有情况:

let lvalue = $(".leave-input").val();
const baseValue = Math.round((lvalue - Math.floor(lvalue)) * 100) / 100;
if (baseValue<= 0.29) {
    lvalue = roundDown();
} else if (baseValue>= 0.3) {
    lvalue = roundUp();
}

这是一个工作示例:

function calculate() {

  let lvalue = Number(document.getElementById('input').value)
  const baseValue = Math.round((lvalue - Math.floor(lvalue)) * 100) / 100;
  if (baseValue <= 0.29) {
    lvalue = Math.floor(lvalue);
  } else if (baseValue >= 0.3) {
    lvalue = Math.ceil(lvalue);
  }

  document.getElementById('output').innerHTML = lvalue;
}
<input id="input" type="text" />
<button onClick="calculate()">Round</button>
<div id="output"></div>

let lvalue = $(".leave-input").val();

const integer = Math.trunc(lvalue);
const decimal = lvalue % 1;// or you could do lvalue - interger
if (integer >= 7 && integer <= 16) {
    if (decimal <= 0.29) {
        lvalue = roundDown();
    } else if (decimal >= 0.3) {
        lvalue = roundUp();
    }
}

$(".leave-input").change(function(){
  let lvalue = parseFloat($(".leave-input").val());
  const val = lvalue * 100 % 100 ;                
  if (val <= 29) {
      lvalue = Math.floor(lvalue);//roundDown();
  } else {//your condition will skip anything between .29 and .30
      lvalue = Math.ceil(lvalue);//roundUp();
  }
  $(".result").html(lvalue);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="leave-input" />
<div class="result"></div>

如果给值加上0.2,就可以用Math.round():

input.oninput = function() {
  let lvalue = +document.getElementById('input').value + 0.2;
  document.getElementById('output').innerHTML = Math.round(lvalue);
}
<input id="input" type="text">
<div id="output"></div>