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. P> 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. P> Quelqu'un? P> P>
9 Réponses :
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.
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 code> et renvoyer numéro% 100 code>. Cela retournera un nombre de 0 à 99.
Quelque chose comme ça (code C, mais devrait être facilement portable):
Une question latérale: comment puis-je récupérer le 5ème et le 6ème numéro sous forme de paire?
var seventh_digit = ( myDigit/1000000 ) % 10;
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; code>
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 ;
}
Nice maintenant, écrivez cela comme une méthode d'extension pour INT et c'est parfait :-)
SOLUTION MATHÉMATIQUE SANS BOUCLE:
int myDigit = 2345346792; var seventh = (myDigit / 1000000) % 10; //result should be 5, your seventh digit from the right
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
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;
}
var nthDigit = (int)((number / Math.Pow(10, nth - 1)) % 10); Where nth is n-th digit of the number.
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));
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");
}
}
Les identificateurs ne peuvent pas commencer par des chiffres.