在javascript中舍入到大于0.9

在javascript中舍入到大于0.9,javascript,Javascript,有没有办法对数字进行四舍五入,即如果其2.3或更大,则应保持为2,但如果大于2.9,则应四舍五入为3。我不知道我该如何让他们学习数学,因为这总是让他们在2.4分后达到3分。谢谢。您可以使用下面这样的助手方法 function Extended_Roundoff(num, decimal_threshold){ var decimal_part = num - Math.floor(num); if(decimal_part >= decimal_threshold){ re

有没有办法对数字进行四舍五入,即如果其2.3或更大,则应保持为2,但如果大于2.9,则应四舍五入为3。我不知道我该如何让他们学习数学,因为这总是让他们在2.4分后达到3分。谢谢。

您可以使用下面这样的助手方法

function Extended_Roundoff(num, decimal_threshold){
  var decimal_part = num - Math.floor(num);
  if(decimal_part >= decimal_threshold){
    return Math.ceil(num);
  }else{
    return Math.floor(num);
  }
}

console.log(Extended_Roundoff(2.3, 0.9));
console.log(Extended_Roundoff(2.95, 0.9));

一种方法是添加偏移以将取整“轴”从0.5移动到0.9。如果
x
是要舍入的数字,则使用


Math.round(x-0.4)
没有抓住第一个条件:如果它是2.3并且更大,(?),它应该返回2

这是一个函数,它对分数大于0.9的数字进行四舍五入

function customRound(number){
  return (number-(~~number))>0.9 ? ~~number+1 : ~~number;
}
如果v小于x.9,则返回x

customRound(2.1) // 2
customRound(2.8) // 2
customRound(2.89) // 2
否则,如果v大于x.9,则返回x+1

customRound(2.91) // 3

您可以根据需要自定义偏移量。

这将返回24,如果num为23.6,将返回23

var num = 23.9;
var nr = num % Math.floor(num)
nr = Math.round(nr * 100) / 100
if(nr >=0.9){
    num = Math.floor(num+1);
}else{
    num = Math.floor(num);
}
alert(num);

大于2.9或大于或等于2.9?此外,我怀疑Math.round将2.41轮改为3轮。大于2.9的应改为3轮,但如果小于2轮,则应改为2轮,您可以创建自定义函数来实现此逻辑,而不是Math.round u可以调用此函数。函数customRound(a){如果(a*10%10>=3&&a*10%10),那么2.9本身呢?2.9也应该变成3@Downvoter(s) :我需要咖啡吗?这不符合哪项要求?(我在初稿中有一个打字错误。)这是正确的答案,我不知道,为什么会有向下投票者。如其他答案所示,不需要使用自定义舍入功能,但这与您的答案很相似。您已经知道您输入了一个使代码无法正常工作的拼写错误。现在您已修复了该拼写错误,向下的投票被颠倒。系统工作正常。如果该值小于2.9,则应舍入为2,如果为2.9或更大,则应舍入为2han this应该变成3。Thanks什么应该变成7.9?UV'd。基本上是我的答案,但有一些解释。(虽然我个人不想把它包装成一个单独的函数-对我来说,
Math.round(v-0.4)
在呼叫站点比
customRound(v))更明显。
var num = 23.9;
var nr = num % Math.floor(num)
nr = Math.round(nr * 100) / 100
if(nr >=0.9){
    num = Math.floor(num+1);
}else{
    num = Math.floor(num);
}
alert(num);