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;
}