数字の桁数を見つける方法

高い確率で、すべてのプログラマーに少なくとも1つのそのようなタスクがあったと仮定できます。 桁数を見つけるには多くの方法があります。 この記事では、最も平凡な機能をいくつか紹介しますが、そうではありません。



1.ストリングの長さ



かなり一般的な方法は、文字列の長さを見つけることです。 これは最速の方法ではありませんが、非常に単純なタスクに適しています。



public int getCountsOfDigits(long number) { return String.valueOf(Math.abs(number)).length(); }
      
      





2.分割サイクル



一般的な方法で、速度は数値の長さに線形に依存します。



  public int getCountsOfDigits(long number) { int count = (number == 0) ? 1 : 0; while (number != 0) { count++; number /= 10; } return count; }
      
      







3. 10進数の対数と丸め



対数は一定の時間に対して機能し、その利点は大きな数にあります。



 public static int getCountsOfDigits(long number) { return(number == 0) ? 1 : (int) Math.ceil(Math.log10(Math.abs(number) + 0.5)); }
      
      





Math.ceilのみが対数を使用するためのオプションの1つであるだけでなく、使用できます。



4.比較



intのみのコード量のために、迅速ですが実用的ではない方法で、38行かかりました。 もちろん、より美しく、より理解しやすい職人もいます。 コードは長く残さないで、intのままにしますが、原理は明確だと思います。



コード
  public static int getCountsOfDigits(int n) { if (n < 100000) { if (n < 100) { if (n < 10) { return 1; } else { return 2; } } else { if (n < 1000) { return 3; } else { if (n < 10000) { return 4; } else { return 5; } } } } else { if (n < 10000000) { if (n < 1000000) { return 6; } else { return 7; } } else { if (n < 100000000) { return 8; } else { if (n < 1000000000) { return 9; } else { return 10; } } } } }
      
      







評価は次のようになります。

1.比較(最良の結果を表示)

2.対数

3.部門

4.文字列(最悪の結果)



All Articles