web-dev-qa-db-ja.com

javascript内で大きな整数のn番目の桁を選択するにはどうすればよいですか?

N番目の文字を選択するときは、charAt()メソッドを使用しますが、文字列値の代わりに整数を処理するときに使用できる同等のものは何ですか?

16
Simon Suh

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); 
26
Seth

これはばかげた解決策ですが、文字列に変換しなくても機能するようです。

var number = 123456789;
var pos = 4;
var digit = ~~(number/Math.pow(10,pos))- ~~(number/Math.pow(10,pos+1))*10;
4
Christian
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)を計算します。

2
Bastian Hofmann

数値を文字列に変換して同じことを行うことができます。

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

2
majelbstoat

既存のメソッドが必要な場合は、それを文字列に変換してcharAtを使用します。

文字列への変換を回避する方法が必要な場合は、10で繰り返し除算してゲームをプレイし、右から十分な桁を削除できます。たとえば、右から3番目の桁が必要な場合は123456789(6) 、10で3倍して123456を生成し、結果mod 10を取得して6を生成します。左から桁数を数え始めたい場合は、おそらくそうしますが、全体の桁数(基数10)を知る必要があります。数値。数値の10を底とするログから推測できます...これはすべて、単に文字列に変換するよりも効率的ではない可能性があります。

2
metamatt
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 */
0
Kareem
var num = 123456;
var secondChar = num.toString()[1]; //get the second character
0
daniel