JavaScript地板数量到数量级

时间:2014-05-28 16:25:33

标签: javascript

我希望根据其数量级排列任何整数>= 10。例如,

15 -> 10
600 -> 100
8,547 -> 1,000
32,123 -> 10,000
3,218,748 -> 1,000,000
544,221,323,211 -> 100,000,000,000
....

我在考虑将int解析为string并计算有多少位数,然后将新字符串设置为1 +一堆零并转换回数字。< / p>

function convert(n) {
    nStr = n.toString();
    nLen = nStr.length;
    newStr = "1" + Array(nLen).join("0");
    return parseInt(newStr);
}

有更多数学方法可以做到这一点吗?我想避免在intstr之间进行转换,因为当n很大并且我想要运行此函数一百万次时,它可能会浪费大量内存和磁盘空间。

1 个答案:

答案 0 :(得分:23)

所以你正在寻找数量级。

function convert(n) {
    var order = Math.floor(Math.log(n) / Math.LN10
                       + 0.000000001); // because float math sucks like that
    return Math.pow(10,order);
}

简单^ _ ^数学太棒了!然而,浮点不精确不是。请注意,这在某些边缘情况下并不完全准确,但它会尽力而为。