如何解决如何在0.5以外的其他阈值处四舍五入
我将如何更改此代码,以便可以用7到16之间的任何数字替换数字7?
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之间的任何数字?
解决方法
如果将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>
,
您可以将其设置为小于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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。