BigInteger: Zählt die Anzahl der Dezimalstellen in einer skalierbaren Methode
Ich brauche die Anzahl der Nachkommastellen von aBigInteger
. Zum Beispiel:
99
kehrt zurück2
1234
kehrt zurück4
9999
kehrt zurück4
12345678901234567890
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?