【发布时间】:2013-09-16 12:42:14
【问题描述】:
我需要计算BigInteger 的小数位数。例如:
-
99返回2 -
1234返回4 -
9999返回4 -
12345678901234567890返回20
我需要为带有184948 十进制数字等的BigInteger 执行此操作。 我怎样才能快速且可扩展地做到这一点?
convert-to-String 方法很慢:
public String getWritableNumber(BigInteger number) {
// Takes over 30 seconds for 184948 decimal digits
return "10^" + (number.toString().length() - 1);
}
这种 loop-devide-by-10 方法更慢:
public String getWritableNumber(BigInteger number) {
int digitSize = 0;
while (!number.equals(BigInteger.ZERO)) {
number = number.divide(BigInteger.TEN);
digitSize++;
}
return "10^" + (digitSize - 1);
}
有没有更快的方法?
【问题讨论】:
标签: java biginteger