如何在javascript内的大整数中选择第n位?

时间:2011-01-11 06:08:24

标签: javascript select integer find

当我想选择第n个字符时,我使用charAt()方法,但在处理整数而不是字符串值时,我可以使用什么?

7 个答案:

答案 0 :(得分:24)

使用String()

var number = 132943154134;

// convert number to a string, then extract the first digit
var one = String(number).charAt(0);

// convert the first digit back to an integer
var one_as_number = Number(one); 

答案 1 :(得分:4)

这是一个愚蠢的解决方案,但似乎没有转换为字符串。

var number = 123456789;
var pos = 4;
var digit = ~~(number/Math.pow(10,pos))- ~~(number/Math.pow(10,pos+1))*10;

答案 2 :(得分:2)

您可以将数字转换为字符串并执行相同的操作:

parseInt((number + '').charAt(0))

答案 3 :(得分:2)

如果您需要现有方法,请将其转换为字符串并使用charAt。

如果你想要一种避免将其转换成字符串的方法,你可以玩游戏,将其重复除以10以从右边剥去足够的数字 - 例如123456789,如果你想要从右到右的数字(6),除以10 3次得到123456,然后得到结果mod 10得到6.如果你想从左边开始计数你可能做的数字,那么你需要知道有多少位数(基数10)是在整个数字中,您可以从数字的日志基数10中推断出......所有这些都不可能比将其转换为字符串更有效。

答案 4 :(得分:1)

function digitAt(val, index) {
  return Math.floor(
    (
       val / Math.pow(10, Math.floor(Math.log(Math.abs(val)) / Math.LN10)-index)
    )
     % 10
  );
};

digitAt(123456789, 0) // => 1
digitAt(123456789, 3) // => 4

有点乱。

Math.floor(Math.log(Math.abs(val)) / Math.LN10)

计算数字中的位数(-1)。

答案 5 :(得分:0)

var num = 123456;
var secondChar = num.toString()[1]; //get the second character

答案 6 :(得分:0)

var number = 123456789

function return_digit(n){
   r = number.toString().split('')[n-1]*1;
   return r;
}

return_digit(3); /* returns 3 */
return_digit(6); /* returns 6 */