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
devoluciones2
1234
devoluciones4
9999
devoluciones4
12345678901234567890
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?