如何在 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>
我将如何更改此代码,以便可以将数字 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>