7
votes

Obtenez le septième chiffre d'un entier

J'ai un entier de 10 chiffres. J'ai besoin d'obtenir le 7ème chiffre de cet entier.

J'ai trouvé une solution mathématique pour obtenir le premier chiffre d'un entier. xxx

Comment puis-je obtenir le septième chiffre de mydigit? J'essaie d'éviter de casser la chaîne et de faire une sous-chaîne. J'aimerais voir la version mathémathique d'obtenir le septième chiffre.

Quelqu'un?


1 commentaires

Les identificateurs ne peuvent pas commencer par des chiffres.


9 Réponses :


11
votes
int getSeventhDigit(int number)
{
    while(number >= 10000000)
        number /= 10;

    return number % 10;
}
This will take the last digit of numbers with 7 or less digits. For numbers with 8 or more digits, it will divide by 10 until the number is 7 digits long, then take the last digit.

3 commentaires

Merci! Cela fonctionne bien ... et j'ai pensé la partie mathématique. J'ai oublié que le code lit de droit à gauche, donc c'était en fait le 4ème chiffre de droite dont j'avais besoin.


Une question latérale: comment puis-je récupérer le 5ème et le 6ème numéro sous forme de paire?


Pour obtenir les 5ème et 6ème chiffres, modifiez le numéro dans la boucle tandis que sur 1000000 et renvoyer numéro% 100 . Cela retournera un nombre de 0 à 99.



2
votes

Quelque chose comme ça (code C, mais devrait être facilement portable): XXX


1 commentaires

Une question latérale: comment puis-je récupérer le 5ème et le 6ème numéro sous forme de paire?



13
votes
var seventh_digit = ( myDigit/1000000 ) % 10;

2 commentaires

Une question latérale: comment puis-je récupérer le 5ème et le 6ème numéro sous forme de paire?


var fifth_and_sixth = (myDigit / 10000)% 100;



3
votes

En supposant que le "zeroth chiffre" est le chiffre le moins important, cela devrait vous faire:

    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 ;
    }


1 commentaires

Nice maintenant, écrivez cela comme une méthode d'extension pour INT et c'est parfait :-)



6
votes

SOLUTION MATHÉMATIQUE SANS BOUCLE:

int myDigit = 2345346792;

var seventh = (myDigit / 1000000) % 10;

//result should be 5, your seventh digit from the right


2 commentaires

Une question latérale: comment puis-je récupérer le 5ème et le 6ème numéro sous forme de paire?


@CODINGJOE (myDigit / 10000)% 100



5
votes

Plus généralement, vous pouvez créer un tableau (basé sur zéro) à partir des chiffres:

uint myDigit = 2345346792;

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


0 commentaires

5
votes
var nthDigit = (int)((number / Math.Pow(10, nth - 1)) % 10);
Where nth is n-th digit of the number.

0 commentaires

0
votes

Cela peut sembler obsolète, mais je voulais obtenir des chiffres spécifiques d'une série de chiffres et la plupart de ces solutions (et d'autres que j'ai trouvées) manquaient. Donc ... j'ai décidé une solution de contournement et convertit le numéro à une chaîne puis a tiré les caractères de la chaîne, la convertissant à un int. Je sais que ce n'est pas très efficace, mais pour de petits projets, je ne me préoccupe pas d'efficacité.

Pour ma tâche, je travaillais spécifiquement avec des numéros de téléphone, voici mon code: P>

long number = 5559876543;
string s = "" + number;

int areaCode = int.Parse(s.Substring(0, 3));
int prefix = int.Parse(s.Substring(3, 3));
int suffix = int.Parse(s.Substring(6, 4));


0 commentaires

0
votes
public static int GetNthDigit(this int value, int digits)
{
    double mult = Math.Pow(10.0, digits);

    if (value >= mult)
    {
        while(value >= mult)
            value /= 10;

        return value % 10;
    }

    else
    {
        throw new ArgumentOutOfRangeException("Digits greater than value");
    }
}

0 commentaires