如何确定C ++中的整数位数?

时间:2014-01-05 03:23:53

标签: c++ integer digits

我试图确定C ++中整数的位数,到目前为止我已尝试过以下方法:

1

unsigned GetNumberOfDigits (unsigned i)
{
    return i > 0 ? (int) log10 ((double) i) + 1 : 1;
}

2

int length_of_int(int input){
    int length = 0;
    while(input > 0){
        length++;
        input /= 10;
        if(input == 0)
            length++;
    }
    return length;
}

3

int NumDigits(int x)  
{  
    x = abs(x);  
    return (x < 10 ? 1 :   
        (x < 100 ? 2 :   
        (x < 1000 ? 3 :   
        (x < 10000 ? 4 :   
        (x < 100000 ? 5 :   
        (x < 1000000 ? 6 :   
        (x < 10000000 ? 7 :  
        (x < 100000000 ? 8 :  
        (x < 1000000000 ? 9 :  
        10)))))))));  
}

在我的案例中没有一个可行,例如&#34; 000101&#34;它有6位数,但要么是4或3.任何帮助?

这样做的目的是检查有效日期,格式为YYMMDD。我知道这种格式有Y2K错误,但它必须在任务中指定。

1 个答案:

答案 0 :(得分:2)

你写道 并且没有一个在我的情况下有效,例如“000101”它有6位数,但它要么说4或3.任何帮助?

如果整数是000101那么前3个零将被删除,它将变为101 如果它是一个字符串,你只需计算字符串中的字母数 似乎你想表示二进制我会使用位数组为此 编辑:好吧,它不是二进制文件,它应该存储在字符串中,以避免出现这个Y2K错误。

int count = strlen("000101");