BigInteger: подсчитать количество десятичных цифр в масштабируемом методе

Мне нужно посчитать количество десятичных цифрBigInteger, Например:

99 возвращается21234 возвращается49999 возвращается412345678901234567890 возвращается20

Мне нужно сделать этодляBigInteger с участием184948 десятичные цифры и многое другое. Как я могу сделать это быстро и масштабируемо?

преобразовать в строку подход медленный:

public String getWritableNumber(BigInteger number) {
   // Takes over 30 seconds for 184948 decimal digits
   return "10^" + (number.toString().length() - 1);
}

Этотпетля-перешеек-на-десять подход еще медленнее

public String getWritableNumber(BigInteger number) {
    int digitSize = 0;
    while (!number.equals(BigInteger.ZERO)) {
        number = number.divide(BigInteger.TEN);
        digitSize++;
    }
    return "10^" + (digitSize - 1);
}

Есть ли более быстрые методы?

Ответы на вопрос(4)

Ваш ответ на вопрос