자바 api에서 제공해주는 로그함수는 3가지 뿐입니다.
그 중에는 아쉽게도 밑을 직접 설정할 수 있는 함수가 없기때문에 직접 만들어야 합니다.
간단하게 수학 식을 알고 있다면 문제 없이 만들 수 있겠지만... 역시 까먹기 마련이죠.
저 역시 갑자기 사용해야 하는데 문득 생각이 나지 않아 이렇게 포스트를 하고 있네요. 하하;
자바 api에는 Math.log()와 Math.log10() 함수가 있습니다.
이 함수를 사용하여 밑이 2인 로그함수를 만들 수 있습니다.
baseLog(수, 밑)
첫 번째 방법.
static double baseLog(double x, double base) {
return Math.log10(x) / Math.log10(base);
}
두 번째 방법.
static double baseLog(double x, double base) {
return Math.log(x) / Math.log(base);
}
둘 중 아무거나 쓰셔도 상관없습니다. 원리가 같기 때문이죠.
실행을 해보면 잘 돌아가는 것을 확인할 수 있습니다~
전체 소스입니다. 심플하죠..
밑이 2 뿐만 아니라 원하는 수만큼 밑으로 사용할 수 있습니다.
수학적 지식이 필요한 프로젝트의 경우 이처럼 자주 사용되는 계산 법은 util 같이 하나의 패키지에 모아서 넣어두면 사용하기 유용합니다.
알고리즘을 풀 때도 마찬가지로 두고두고 사용할 수 있지요.
자신의 소스가 계속 쌓여서 하나의 자산이 되는걸 발견할 수 있어요.
간단하게 로그함수 작성에 대한 글을 작성해봤습니다.
'JAVA' 카테고리의 다른 글
자바8 - 3. 람다 (0) | 2018.10.02 |
---|---|
자바8 - 2. 동적 파라미터화 (0) | 2018.10.02 |
HashMap vs HashTable vs ConcurrentHashMap (0) | 2017.12.31 |
CheckedException vs UnCheckedException (0) | 2017.06.16 |
JAVA - 변수 (0) | 2014.07.20 |