C#で数値の桁数を求める方法

色んなパターンがあるが、最速はテーブルを使った方法、最も遅いのは文字列化。


こちらはテーブル使った方法

using System;

class Sample {
  static readonly int[] digits = {0, 9, 99, 999, 9999, 99999, 999999, /*9999999, 99999999, ... */};

  static void Main()
  {
    foreach (var num in new[] {0, 1, 9, 10, 11, 99, 100, 500, 999, 1000, 6789, 10000, 99999}) {
      var digit = 1;

      for (;;digit++) {
        if (num <= digits[digit])
          break;
      }

      Console.WriteLine("{0} => {1}", num, digit);
    }
  }
}

ネタ元