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