舍入到最接近的因子N

时间:2018-09-12 15:16:19

标签: javascript algorithm math

给出一个数字x(如13)和一个因数N(如2),我如何计算下面的值8和16?

8 <= 13 < 16

换句话说,我如何在这里计算相等的两端:

N^? <= x < N^(? + 1)

2 个答案:

答案 0 :(得分:1)

您可以取数字的底数n 对数,并将其用作获取ff加1的幂的值。

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(' '));

答案 1 :(得分:1)

编辑。问题感已完全改变。

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