BigInteger: Zählt die Anzahl der Dezimalstellen in einer skalierbaren Methode

Ich brauche die Anzahl der Nachkommastellen von aBigInteger. Zum Beispiel:

99 kehrt zurück21234 kehrt zurück49999 kehrt zurück412345678901234567890 kehrt zurück20

Ich muss das machenFür einBigInteger mit184948 Dezimalstellen und mehr. Wie kann ich das schnell und skalierbar machen?

DasIn String konvertieren Ansatz ist langsam:

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

DieseLoop-Devide-By-Ten Ansatz ist noch langsamer:

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

Gibt es schnellere Methoden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage