2007년 6월 26일 화요일

JavaScript로 자릿수 계산을 하다가... 머리가 굳어버린걸 발견하다

DB에 저장된 값을 읽어와서 JavaScript에서 설정해주는 작업을 하게 되었는데요.
DB에서 저장된 값(숫자)의 첫번째 숫자의 값을 읽어와야 하게 되었습니다. (말이 어렵지요? ^^;;;)
예) 3121 또는 21 이라는 숫자가 있는데 이 숫자들에서 처음으로 나오는 3, 2의 값을 읽어오는 작업입니다.
스트링으로 substr 메소드를 사용해서 0~1의 숫자를 읽어오는 방법도 있습니다만, 수학을 써서 해결할 방법이 없을까 생각을하며 굳어버린 머리를 돌려봤습니다.

어렴풋한 기억으로는 log(base 10)을 사용하면 자릿수가 나온다는 기억이 떠오르더군요. (왜 나오는지는 생각이 안나네요 -_-;;;;) 이 값의 ceiling값을 구하면 되는 걸로 알고 있는데....

문제는 JavaScript에서 2 base로한 log 메소드는 제공되나 10 base로 제공되는 log 메소드는 없더군요.
검색을 해보니 다음과 같은 방법으로 자릿수를 구할 수 있었습니다.

var cipher = Math.ceil((Math.log(value)/Math.log(10)));
결과를 이끌어내기는 했지만... 왜 그런지는 전혀 기억이 나지 않나는군요.
벌써 나이가 들었는지 -_-;;;

관련자료: Variable Based Logarithm

댓글 없음:

댓글 쓰기