メソッドBigIntegerと一緒に値を使用しようとしています。Math.Log10
final BigInteger answerNo = fact;
final int digits = 1 + (int)Math.floor(Math.log10(answerNo));
残念ながら、コンパイラは互換性のない型を言います。
intsをsに変更しBigIntegerても、それでも気に入らない。
メソッドBigIntegerと一緒に値を使用しようとしています。Math.Log10
final BigInteger answerNo = fact;
final int digits = 1 + (int)Math.floor(Math.log10(answerNo));
残念ながら、コンパイラは互換性のない型を言います。
intsをsに変更しBigIntegerても、それでも気に入らない。
を行う代わりに、log10次のようにするだけで桁数を見つけることができます。
int digits = answerNo.toString().length();
int-次のBigIntegerように書くことができます:final BigInteger answerNo = BigInteger.valueOf(fact);Mat.log10を期待しますがdouble、BigInteger精度の低下を気にしない場合は、単にdoubleを使用できます。
final int digits = 1 + (int)Math.floor(Math.log10(fact));
精度が気になる場合は、ログを手動で計算する必要があります。
BigInteger.toString()桁数だけを気にする場合は、メモリの面で非効率になる可能性があります。
代わりに、に変換BigIntegerしてみて、BigDecimalを使用しBigDecimal.precision()て同じことを実現できます。詳細については、この回答を参照してください。