2010-02-20 6 views
0

Je voudrais savoir quelle serait l'approche la plus élégante pour extraire les chiffres d'un double en ObjectiveC utilisant Cocoa Touch (ce qui doit fonctionner sur un iPhone):chiffres DEGAGER entier et parties décimales d'une double

Supposons que vous ayez un double: 1.423

Comment obtiendriez-vous chaque "1", "4", "2", "3", qui composent le double dans plusieurs variables?

En fin de compte, je voudrais obtenir quelque chose comme:

 
NSLog(@"here are the digits : %d , %d %d %d ", one, two, three, four);

une variable doit être 1

deux variables devraient être possédés 4

trois variables devrait être 2

quatre variable devrait être 3

Tout conseil pour réaliser ceci d'une manière agréable en utilisant l'objet iveC/cacao Touch?

Merci.

+0

'14,6566 = " 1 4 6 5 6 6"'? '2.0 =' ????? 'NaN =' ???????? – kennytm

+0

14.6566 = "1 4. 6 5 6 6" => OUI 2.0 = "2" "0" Nan = peu importe. – yonel

Répondre

0

Je le convertir en une chaîne (en utilisant +[NSString stringWithFormat:]), puis numériser les numéros en utilisant rangeOfCharactersInSet: ou NSScanner.

3

Voici quelque chose que j'ai fouetté pour vous très rapidement.

@interface NSNumber (DigitParsing) 

- (NSArray *)arrayOfStringDigits; 

@end 

@implementation NSNumber (DigitParsing) 

- (NSArray *)arrayOfStringDigits { 
    NSString *stringNumber = [self stringValue]; 
    NSMutableArray *digits = [NSMutableArray arrayWithCapacity:[stringNumber length]]; 
    const char *cstring = [stringNumber cStringUsingEncoding:NSASCIIStringEncoding]; 
    while (*cstring) { 
     if (isdigit(*cstring)) { 
      [digits addObject:[NSString stringWithFormat:@"%c", *cstring]]; 
     } 
     cstring++; 
    } 
    return digits; 
} 

@end 

Puis dans votre code, faire quelque chose comme ceci:

NSArray *myDigits = [[NSNumber numberWithDouble:1.423] arrayOfStringDigits]; 
NSLog(@"Array => %@", myDigits); 
NSLog(@"here are the digits : %@ , %@ %@ %@ ", 
     [myDigits objectAtIndex:0], 
     [myDigits objectAtIndex:1], 
     [myDigits objectAtIndex:2], 
     [myDigits objectAtIndex:3]); 
+0

Salut, merci de prendre le temps de partager cela. Je ne connaissais pas l'isdigit qui est une fonction C standard, n'est-ce pas? :/Je vais essayer de le remercier! – yonel

+0

Cela a-t-il fonctionné pour vous? Si c'est le cas, pouvez-vous marquer cette réponse? – bstahlhood

Questions connexes