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