7

私は10桁の整数を持っています。その整数の 7 桁目を取得する必要があります。

整数の最初の桁を取得する数学的な解決策を見つけました。

var myDigit = 2345346792;

var firstDigit = Math.Abs(myDigit);
while (firstDigit >= 10)
{
     firstDigit /= 10;
}

myDigit から 7 桁目を取得するにはどうすればよいですか? 文字列へのキャストと部分文字列の実行を回避しようとしています。7 桁目を取得する数学的なバージョンを見たいと思います。

誰?

4

9 に答える 9

13
var seventh_digit = ( myDigit/1000000 ) % 10;
于 2012-12-06T21:21:55.980 に答える
11
int getSeventhDigit(int number)
{
    while(number >= 10000000)
        number /= 10;

    return number % 10;
}

これは、7 桁以下の数字の最後の桁を取ります。

8 桁以上の数字の場合は、数字が 7 桁になるまで 10 で割り、最後の数字を取ります。

于 2012-12-06T21:20:50.613 に答える
5

より一般的には、数字から (ゼロベースの) 配列を作成できます。

uint myDigit = 2345346792;

int[] digits = new int[10];
for (int i = 9; i >= 0; i--)
{
    digits[i] = (int)(myDigit % 10);
    myDigit /= 10;
}

これは、あなたがやりたいどんな操作にも役立つはずです。

于 2012-12-09T00:16:11.907 に答える
3

「ゼロ桁」が最下位桁であると仮定すると、次のようになります。

    public static int nthDigit( int value , int n )
    {
        if ( n < 0 ) throw new ArgumentException();
        if ( value < 0 ) throw new ArgumentException() ;

        while ( n-- > 0 )
        {
            value /= 10 ;
        }

        int digit = value % 10 ;
        return digit ;
    }
于 2012-12-06T21:27:33.497 に答える
2

このようなもの (C コードですが、容易に移植できるはずです):

if (n < 1000000)
  return 0;        // no 7th digit
while (n > 9999999)
  n /= 10;         // now in the range [1,000,000..9,999,999]
return n % 10;
于 2012-12-06T21:21:09.163 に答える