从double的整数和小数部分提取数字

时间:2010-02-20 18:12:05

标签: iphone objective-c cocoa-touch

我想知道使用Cocoa Touch在ObjectiveC中从double中提取数字的最优雅方法是什么(这需要在iPhone上运行):

假设你有一个双倍:1.423

你如何得到每个“1”,“4”,“2”,“3”,组成几个变量的双倍?

最后我想得到类似的东西:


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

一个变量应为1

两个变量应该是4

三个变量应为2

四个变量应为3

使用ObjectiveC / cocoa Touch以不错的方式实现这一目标的任何建议?

感谢。

2 个答案:

答案 0 :(得分:3)

这是我真正快速为你鞭打的东西。

@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

然后在您的代码中,执行以下操作:

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]);

答案 1 :(得分:0)

我将其转换为字符串(使用+[NSString stringWithFormat:]),然后使用rangeOfCharactersInSet:NSScanner扫描数字。