在Objective C中获取值最重要的数字

时间:2012-03-29 20:58:12

标签: objective-c c math modulo

我目前在目标C中有代码可以提取整数的最高有效数字值。我唯一的问题是,如果有更好的方法,而不是我在下面提供的方式。它完成了工作,但它只是感觉像一个廉价的黑客。

代码的作用是传递一个数字并循环直到该数字已成功分成某个值。我这样做的原因是一个教育应用程序,它将数字除以它的值,并显示所有值一起添加以产生最终输出(1234 = 1000 + 200 + 30 + 4)

int test = 1;
int result = 0;
int value = 0;

do {
    value = input / test;
    result = test;
    test = [[NSString stringWithFormat:@"%d0",test] intValue];
} while (value >= 10);

总是非常感谢任何建议。

1 个答案:

答案 0 :(得分:8)

这会起作用吗?

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

基本上它执行以下操作:

  1. 找出输入中的位数(log10(input))并将其存储在“数字”中。
  2. input除以10 ^ digits
  3. 您现在应该拥有最重要的数字。

    编辑:如果您需要一个在特定索引处获取整数值的函数,请检查此函数:

    int digitAtIndex(int input, int index)
    {
        int trimmedLower = input / (pow(10, index)); // trim the lower half of the input
    
        int trimmedUpper = trimmedLower % 10; // trim the upper half of the input
        return trimmedUpper;
    }