如何分解整数?

时间:2011-09-21 18:57:12

标签: iphone objective-c ios ipad integer

假设我有一个整数,例如2,734,465,它被称为intOne。如何“拆分”整数,以便我可以将数字放在7个UILabels中?所以,在第一个标签中我将有2个,然后在第二个标签中我将有7个,依此类推。我该怎么做?谢谢你的帮助!

5 个答案:

答案 0 :(得分:4)

使用

之类的东西将其转换为字符串
NSString *intString = [NSString stringWithFormat:@"%d", myInt];

然后你可以把个别角色拿出来:

myChar = [intString characterAtIndex: i];

答案 1 :(得分:2)

获得字符串后,您也可以使用:

 NSString *keyStr = [intString substringWithRange:NSMakeRange (i, j)];

直接获取子字符串

作为字符串操作的替代方法,您可以通过数学方式将数字n分开:

 int n = 1357246;
    int digit;
    int divisor;
    for (int i = log10(n); i> 0; i--) {
        divisor = pow(10,i);

        digit = n / divisor;
        n = n - digit*divisor;
        NSLog(@"%i ",digit);
    }
      NSLog(@"%i ",n);

答案 2 :(得分:2)

这是一种不同的方法。这将创建一个数组,其元素是单个数字(前面的“ - ”如果是负数):

#import <Foundation/Foundation.h>

NSArray* brokenArrayWithInt(NSInteger intOne) {
    NSMutableArray *result = [[[NSMutableArray alloc] init] autorelease];
    BOOL isNegative = NO;
    if (intOne < 0) {
        isNegative = YES;
        intOne = -intOne;
    }
    do {
        [result insertObject:[NSNumber numberWithInteger:intOne % 10] atIndex:0];
        intOne /= 10;
    } while (intOne > 0);

    if (isNegative) {
        [result insertObject:@"-" atIndex:0];
    }
    return result;
}

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSArray *brokenArray = brokenArrayWithInt(2734465);
    NSLog(@"Array: %@", brokenArray);
    brokenArray = brokenArrayWithInt(-2734465);
    NSLog(@"Array: %@", brokenArray);
    brokenArray = brokenArrayWithInt(0);
    NSLog(@"Array: %@", brokenArray);
    [pool drain];
    return 0;
}

结果如下:

Running…
2011-09-21 12:28:52.531 so7505138[6739:a0f] Array: (
    2,
    7,
    3,
    4,
    4,
    6,
    5
)
2011-09-21 12:28:52.533 so7505138[6739:a0f] Array: (
    "-",
    2,
    7,
    3,
    4,
    4,
    6,
    5
)
2011-09-21 12:28:52.533 so7505138[6739:a0f] Array: (
    0
)

答案 3 :(得分:0)

这取决于您是否希望该号码选择相关的区域设置特定格式,例如:千位分隔符和小数点。如果你这样做,那么把它变成一个字符串,然后像其他人建议的那样提取字符。

如果你想获得每个十进制数字的值,那么你可以从模数10,100,1000等开始,从小于总值的10的幂开始(例如,对于213,从100开始,然后是10) ,然后1)

答案 4 :(得分:-1)

将整数转换为字符串 - 然后使用方法将字符串拆分/子串为7个字符串。或者您需要的金额。在每个标签中放一个字符串。

[NSString stringWithFormat:@"%d", myNum];

开始