在JavaScript中,最简洁,优雅,高效的四舍五入到最接近的5的方法是什么?

时间:2016-04-15 18:40:50

标签: javascript algorithm optimization

我想要一个功能

NearestFive(3) --> 5
NearestFive(5) --> 0
NearestFive(6) --> 5

如果这是有道理的。我能想到的最好的是

function NearestFive ( x )
{
   var r = x % 5; 
   if ( r == 0 ) return x; 
   else if ( r > 2 ) return x + 5 - r;
   else return x - r;
}

但我想知道是否有可能整合这些步骤或引入bithift操作来提高效率?

例如,运行两个比较

  1. r == 0
  2. r > 2
  3. 由于r > 2暗示r == 0,因此可能没有必要

2 个答案:

答案 0 :(得分:5)

&round to to to to to to to to to to to to to to to to to to to to to是除以X,舍入到最接近的整数,然后再乘以X。

function NearestX(num, factor) {
    return Math.round(num/factor)*factor;
}

这甚至适用于舍入到最近的小数部分(例如,最接近的0.1)

答案 1 :(得分:0)

根据您的浏览器,这可以快速运行:

RSQuoteViewController

在我的浏览器中,效果与RSQuote.fetchQuote()相同,但两者都明显快于您在问题中发布的版本。