[C#] 数値の桁数を求める
数値の桁数が欲しくなる時はまれによくあるので、汎用化。
//--------------------------------------------------------------------------------
// 数値の桁数を取得
//--------------------------------------------------------------------------------
public static int GetDigit( int num )
{
return (num == 0) ? 1 : (int)Mathf.Log10( num ) + 1;
}
public static int GetDigit2( int num )
{
return (num.ToString().Length);
}
一見、ToString().Lengthが簡単だし速そうに見えるが、実際に測ってみると
Log10を使う方が軽い。(両方ともfor文で1万回実行)
まぁ、数値から文字列を起こしてるからそんなもんでしょうな。。
負数の桁を調べる場合は、メソッド側で渡された値をAbsする等して正数にするか、
呼び出し側で正数にして渡すだけ。
参考:http://smdn.jp/programming/netfx/tips/get_number_of_digits/
