1

メソッドBigIntegerと一緒に値を使用しようとしています。Math.Log10

final BigInteger answerNo = fact;
final int digits = 1 + (int)Math.floor(Math.log10(answerNo));

残念ながら、コンパイラは互換性のない型を言います。

intsをsに変更しBigIntegerても、それでも気に入らない。

4

3 に答える 3

7

を行う代わりに、log10次のようにするだけで桁数を見つけることができます。

int digits = answerNo.toString().length();
于 2012-09-30T17:01:13.110 に答える
1
  1. にを割り当てることはできませんint-次のBigIntegerように書くことができます:final BigInteger answerNo = BigInteger.valueOf(fact);
  2. Mat.log10を期待しますがdoubleBigInteger

精度の低下を気にしない場合は、単にdoubleを使用できます。

final int digits = 1 + (int)Math.floor(Math.log10(fact));

精度が気になる場合は、ログを手動で計算する必要があります。

于 2012-09-30T16:59:44.547 に答える
0

BigInteger.toString()桁数だけを気にする場合は、メモリの面で非効率になる可能性があります。

代わりに、に変換BigIntegerしてみて、BigDecimalを使用しBigDecimal.precision()て同じことを実現できます。詳細については、この回答を参照してください。

于 2020-07-16T09:54:03.520 に答える