Long-Slow-Distance

Programming Notes with Unity

メニュー

[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が簡単だし速そうに見えるが、実際に測ってみると

160321_get_digit

Log10を使う方が軽い。(両方ともfor文で1万回実行)
まぁ、数値から文字列を起こしてるからそんなもんでしょうな。。

負数の桁を調べる場合は、メソッド側で渡された値をAbsする等して正数にするか、
呼び出し側で正数にして渡すだけ。

参考:http://smdn.jp/programming/netfx/tips/get_number_of_digits/

関連記事