6

たとえば、「256」で「5」を取得します。私が得た最も近いものは Math.floor(256/10)) ですが、それでも前の数字が返されます。私が欲しいものを得る簡単な方法はありますか、それとも大きな機能を作る必要がありますか? また、明確にするために、「n桁」が定義されます。たとえば、getDigit(2,256) は 5 (2 桁目) を返します。

4

9 に答える 9

11

どうですか

(12345 + "")[3] 

また

(12345 + "").charAt(3)

反対側から数える

[length of string - digit you want]したがって、2が必要な場合は次のとおりです。

5 - 4 = 1 
(12345 + "")[1] = "2"


function getNumber (var num, var pos){
  var sNum = num + "";

  if(pos > sNum.length || pos <= 0){return "";}

  return sNum[sNum.length - pos]; 

}
于 2010-12-23T23:16:05.257 に答える
11
Math.floor((256 / 10) % 10)

またはより一般的に:

Math.floor(N / (Math.pow(10, n)) % 10)

ここNで、 は抽出する数値nで、 は桁の位置です。これは、右から 0 からカウントされ (つまり、最下位桁 = 0)、 の無効な値は考慮されないことに注意してくださいn

于 2010-12-23T23:16:10.810 に答える
6

まず、数値を文字列にキャストする必要があります。その後、通常どおり文字にアクセスできます。

var num = 256;
var char = num.toString()[1]; // get the 2nd (0-based index) character from the stringified version of num

編集:..最初に数値を変数として設定せずにアクセスする場合は、関数にアクセスするために二重ドットが必要であることにも注意してください。

var char = 256..toString()[1];

最初のドットはインタプリタに「これは数値です」と伝えます。2 番目は関数にアクセスします。

于 2010-12-23T23:16:28.723 に答える
0

変数「count」を使用してループを制御する

var count = 1; //starting 1
for(i=0; i<100; i++){
  console.log(count);
  if(i%10 == 0) count++;
}

出力は1 2 3 4 5 6 7 8 9を埋めます

于 2015-09-03T03:42:34.143 に答える
0

これはそれを行う必要があります:

function getDigit ( position, number ) {
  number = number + ""; // convert number to string
  return number.substr ( position + 1, 1 ); // I'm adding 1 to position, since 0 is the position of the first character and so on
}
于 2010-12-23T23:15:51.550 に答える
0

文字列と部分文字列 (2,2) に変換しますか?

于 2010-12-23T23:16:01.017 に答える
0

これを試してみてください。最後の行が重要です:

var number = 12345;
var n = 2;
var nDigit = parseInt((number + '').substr(1,1));
于 2010-12-23T23:16:49.657 に答える
0
// You do not say if you allow decimal fractions or negative numbers- 
// the strings of those need adjusting.

Number.prototype.nthDigit= function(n){
    var s= String(this).replace(/\D+/g,'');
    if(s.length<=n) return null;
    return Number(s.charAt(n))
}
于 2010-12-23T23:45:16.250 に答える
0

すべてを数学的に行いたい場合:

var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,digitNum-1))%10;

このコードは、右から 0 ではなく 1 から数えます。0 から始まるように変更する場合は、呼び出しの -1 の部分を削除します。

左から数えたい場合は、より複雑になり、他のソリューションと同様になります。

var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,number.tostring().length-digitNum))%10;

編集:

また、これは基数 10 の記数法が必要であることを前提としていますが、どちらも他の基数でも機能します。コードの最後の行にある 10 のインスタンスを、使用したい記数法の基数を表す数に変更するだけです。(つまり、16 進数 = 16、2 進数 = 2)

于 2010-12-23T23:51:38.340 に答える