代码之家  ›  专栏  ›  技术社区  ›  Max Hudson

四舍五入到最接近的因数N

  •  -1
  • Max Hudson  · 技术社区  · 7 年前

    x (比如13),还有一个因素 N (如2),如何计算下面的值8和16?

    8 <= 13 < 16
    

    换句话说,我如何计算等式的两端:

    N^? <= x < N^(? + 1)
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Nina Scholz    7 年前

    你可以坐在地板上 对数值进行对数运算,并将其用作求 f f

    function getInterval(x, n) {
        var f = Math.floor(Math.log(x) / Math.log(n));
        return [Math.pow(n, f), Math.pow(n, f + 1)];
    }
    
    console.log(getInterval(3, 2).join(' '));
    console.log(getInterval(23, 7).join(' '));
    console.log(getInterval(13, 2).join(' '));
        2
  •  1
  •   MBo    7 年前

    编辑。问题意识完全改变了。

    pwr = Math.floor(Math.log(x) / Math.log(n))
    low = Math.pow(n, pwr)
    high = Math.pow(n, pwr + 1)