[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/