컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post C언어] log2 (밑이 2인 로그 함수), log (ln), log10(상용 로그) 구하...Perl/펄] log (ln), log10, log2, 상용 로그 함수, 밑이 10, 2인...Python/파이썬] log (ln), log10, log2, 로그 함수 [밑이 2인 로그...Perl/펄] 문자열/배열 양쪽 공백 제거, 정규식 사용; Trim Leading / Tr...Python/파이썬] 문자열 앞이나 끝의 공백만 제거; Remove Leading-Trai...C언어] 오늘 요일 이름 구하기, 요일명 출력; Get-Print DAY OF THE WE...Python/파이썬] 오늘 요일 이름 구하기, 요일명 출력; Get-Print DAY OF...Python/파이썬] 문자열 양쪽의 불필요한 공백 제거; Trim Trailing Spac...Python/파이썬] 정수 실수 자료형, 숫자 데이터형; int long float Num...자바스크립트] 한국식 날짜/시간 문자열 출력; 타임 스탬프 찍기; JavaScript YY...

Java/자바] log2 (밑이 2인 로그 함수), log (ln), log10(상용 로그) 구하기

Saturday, January 20, 2007

자바에는 자연로그(Natural Logarithm)를 구하는 log() 함수와, 밑(Base)이 10인 상용 로그를 구하는 log10() 함수만 있기에,

밑이 2인 로그 등을 구하려면 직접 함수를 만들어야 합니다. 아래 예제에 logB() 라는 메소드(함수)가 있는데

logB(숫자, 밑)

이런 형식으로 임의의 실수를 밑으로 지정할 수 있습니다.


자연로그, 상용로그, 밑(Base)이 2인 로그 계산 예제


파일명: Foo.java
public class Foo {
  public static void main(String[] args) {


    System.out.format("  자연 로그 :%n%n");

    for (double d = 1.0; d <= 10.0; d++)
      System.out.format("   ln(%2.0f) = %.16f%n", d, Math.log(d));




    System.out.format("%n%n%n  상용 로그 :%n%n");

    for (double d = 1.0; d <= 10.0; d++)
      System.out.format("log10(%2.0f) = %.16f%n", d, Math.log10(d));




    System.out.format("%n%n%n  밑이 2인 로그 :%n%n");

    for (double d = 1.0; d <= 10.0; d++)
      System.out.format(" log2(%2.0f) = %.16f%n", d, logB(d, 2.0));

  }




  public static double logB(double x, double base) {
    return Math.log(x) / Math.log(base);
  }


}



위의 예제 컴파일 및 실행 결과 화면:
D:\Z>javac Foo.java && java Foo
  자연 로그 :

   ln( 1) = 0.0000000000000000
   ln( 2) = 0.6931471805599453
   ln( 3) = 1.0986122886681096
   ln( 4) = 1.3862943611198906
   ln( 5) = 1.6094379124341003
   ln( 6) = 1.7917594692280550
   ln( 7) = 1.9459101490553132
   ln( 8) = 2.0794415416798357
   ln( 9) = 2.1972245773362196
   ln(10) = 2.3025850929940460



  상용 로그 :

log10( 1) = 0.0000000000000000
log10( 2) = 0.3010299956639812
log10( 3) = 0.4771212547196624
log10( 4) = 0.6020599913279624
log10( 5) = 0.6989700043360189
log10( 6) = 0.7781512503836436
log10( 7) = 0.8450980400142568
log10( 8) = 0.9030899869919435
log10( 9) = 0.9542425094393249
log10(10) = 1.0000000000000000



  밑이 2인 로그 :

 log2( 1) = 0.0000000000000000
 log2( 2) = 1.0000000000000000
 log2( 3) = 1.5849625007211560
 log2( 4) = 2.0000000000000000
 log2( 5) = 2.3219280948873620
 log2( 6) = 2.5849625007211560
 log2( 7) = 2.8073549220576040
 log2( 8) = 3.0000000000000000
 log2( 9) = 3.1699250014423126
 log2(10) = 3.3219280948873626

D:\Z>



▶▶ Java/자바] 자연 로그의 밑 e 상수 구하기 출력; Natural Logarithm, Euler Constant

로그 계산기: ▶▶ 로그계산기; 로그값 구하기; 상용로그, 자연로그, 밑이 2인 로그; Log Calc

2 Comments:
At 10:11 PM, Blogger Jin-oh Kang said...

흠 혹시 Math.log(1000) / Math.log(10) 하면
2.9999999999999996 이렇게 나오지는 않겠죠..?

 
At 10:48 PM, Blogger mwultong said...



2.9999999999999996 로 나오는 것은
System.out.format 의 정밀도가 16 이기 때문입니다.

3.00000000 으로 출력되게 하려면
정밀도를 8 정도로 %.8f 이렇게 하시면 됩니다.

예제::

public class Foo {
public static void main(String[] args) {

double d = Math.log(1000) / Math.log(10);

System.out.format("%.16f%n", d);
// 2.9999999999999996

System.out.format("%.8f%n", d);
// 3.00000000

}
}

 

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top