数値の桁数を取得

たまに使うのでコピペしておく。
Flashじゃなくても使えるね。これ。

一番スマートな方法はこれかなと。
logとかよくわからないのでカンニングしながら作成。
/**
 * 数値の桁数を取得
 * 
 * @param	num - 桁数を求める数値
 * @return	整数部分の桁数
 */
function getDigit(num:Number):uint {
	if(num < 0)	num *= -1;
	return int(Math.log(num) * Math.LOG10E) + 1
}


他の方法も思いついたけど、上の式のほうが計算速度が速かった。
以下、ボツになられた式。



割と無難な方法だと思われる。
変数をつくっているので、メモリとかも食うのかな。
/**
 * 数値の桁数を取得
 * 
 * @param	num - 桁数を求める数値
 * @return	整数部分の桁数
 */
function getDigitBotsu1(num:Number):uint {
	var digit:int;
	
	if(num < 0)	num *= -1;
	while(num > 0) {
		num = int(num / 10);
		digit++;
	}
	
	return digit;
}


超遅い。
Math.abs()をif(num < 0) num *= -1;に変えるだけでも結構違う。
/**
 * 数値の桁数を取得
 * 
 * @param	num - 桁数を求める数値
 * @return	整数部分の桁数
 */
function getDigitBotsu2(num:Number):uint {
	return String(int(Math.abs(num))).split("").length;
}