BigInteger: cuenta el número de dígitos decimales en un método escalable

Necesito contar el número de dígitos decimales de unBigInteger. Por ejemplo:

99 devoluciones21234 devoluciones49999 devoluciones412345678901234567890 devoluciones20

Necesito hacer estoparaBigInteger con184948 dígitos decimales y más. ¿Cómo puedo hacer esto rápido y escalable?

losconvertir en cadena el acercamiento es lento

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

Estaloop-devide-by-ten El acercamiento es aún más lento:

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

¿Hay métodos más rápidos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta