最高效率获取十进制数的位数、最高位

1,293 阅读1分钟
//获取正整数有多少位
private int getDigitNum(int n) {
    int ans = 1;
    if (n >= 100000000) {
        n /= 100000000;
        ans += 8;
    }
    if (n >= 100000) {
        n /= 100000;
        ans += 4;
    }
    if (n >= 100) {
        n /= 100;
        ans += 2;
    }
    while (n >= 10) {
        n /= 10;
        ans += 1;
    }
    return ans;
}

//获取最高位
private int getDigitNum(int n) {
    if (n >= 100000000) {
        n /= 100000000;
    }
    if (n >= 100000) {
        n /= 100000;
    }
    if (n >= 100) {
        n /= 100;
        ans *= 100;
    }
    while (n >= 10) {
        n /= 10;
    }
    return n;
}

//获取最高位
private int getDigitNum(int n) {
    int ans = 1;
    if (n >= 100000000) {
        n /= 100000000;
        ans *= 100000000;
    }
    if (n >= 100000) {
        n /= 100000;
        ans *= 100000;
    }
    if (n >= 100) {
        n /= 100;
        ans *= 100;
    }
    while (n >= 10) {
        n /= 10;
        ans *= 10;
    }
    return ans;
}