我希望根据其数量级排列任何整数>= 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);
}
有更多数学方法可以做到这一点吗?我想避免在int
和str
之间进行转换,因为当n
很大并且我想要运行此函数一百万次时,它可能会浪费大量内存和磁盘空间。
答案 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);
}
简单^ _ ^数学太棒了!然而,浮点不精确不是。请注意,这在某些边缘情况下并不完全准确,但它会尽力而为。