Obtenir le chiffre le plus significatif des valeurs dans Objective C

J’ai actuellement un code dans l’objective C capable d’extraire la valeur numérique la plus significative d’un entier. Ma seule question est de savoir s’il existe un meilleur moyen de le faire que ce que j’ai décrit ci-dessous. Cela fait le travail, mais ça ressemble à un bidouillage pas cher.

Ce que fait le code, c’est qu’il prend un nombre transmis et qu’il rest en boucle jusqu’à ce que ce nombre ait été divisé avec succès en une certaine valeur. La raison pour laquelle je le fais est pour une application éducative qui divise un nombre par sa valeur et affiche toutes les valeurs ajoutées pour produire le résultat final (1234 = 1000 + 200 + 30 + 4) .

 int test = 1; int result = 0; int value = 0; do { value = input / test; result = test; test = [[NSSsortingng ssortingngWithFormat:@"%d0",test] intValue]; } while (value >= 10); 

Tout conseil est toujours grandement apprécié.

Est-ce que ça va faire l’affaire?

 int sigDigit(int input) { int digits = (int) log10(input); return input / pow(10, digits); } 

Fondamentalement, il fait ce qui suit:

  1. Trouve le nombre de chiffres en entrée ( log10(input) ) et le stocke sous forme de «chiffres».
  2. divise l’ input de 10 ^ digits .

Vous devriez maintenant avoir le nombre le plus significatif en chiffres.

EDIT: si vous avez besoin d’une fonction qui obtient la valeur entière à un index spécifique, vérifiez cette fonction:

 int digitAtIndex(int input, int index) { int sortingmmedLower = input / (pow(10, index)); // sortingm the lower half of the input int sortingmmedUpper = sortingmmedLower % 10; // sortingm the upper half of the input return sortingmmedUpper; }