我需要计算 a 的小数位数BigInteger。例如:
99返回21234返回49999返回412345678901234567890返回20
我需要对带有十进制数字等的 aBigInteger184948执行此操作。我怎样才能快速且可扩展地做到这一点?
转换为字符串的方法很慢:
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);
}
有没有更快的方法?