メソッドBigInteger
と一緒に値を使用しようとしています。Math.Log10
final BigInteger answerNo = fact;
final int digits = 1 + (int)Math.floor(Math.log10(answerNo));
残念ながら、コンパイラは互換性のない型を言います。
int
sをsに変更しBigInteger
ても、それでも気に入らない。
メソッドBigInteger
と一緒に値を使用しようとしています。Math.Log10
final BigInteger answerNo = fact;
final int digits = 1 + (int)Math.floor(Math.log10(answerNo));
残念ながら、コンパイラは互換性のない型を言います。
int
sを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()
て同じことを実現できます。詳細については、この回答を参照してください。