안녕하세요. BlockDMask 입니다.
오늘은 C, C++의 수학함수 중에 log 함수에 대해서 살펴보겠습니다.
다들 중고등학교때 지수, 로그 함수 배웠잖아요. 그 로그 log 함수입니다.
우리가 계산할 필요 없어요. 컴퓨터가 해주잖아요. 학생때보다는 좋아졌죠?
아 중고등학교 학생들도 있겠네요. 학생분들 log 함수 익숙하시죠?
로그도 메이저 로그들이 있잖아요. 이름을 특별히 붙여주는 자연로그, 상용로그 같은게 있었죠?
이름이 붙어있는 그 로그들의 함수를 살펴보러 가겠습니다.
1. C언어 log 함수 헤더파일과 함수 원형
C언어에서는 함수 오버로딩(overloading)이 불가능하기 때문에 매개변수 자료형에 따라서 함수명이 다릅니다.
▼ C언어 log 함수 원형(들)과 설명.
헤더파일 : <math.h>
함수원형1 : double log(double n);
함수원형2 : float logf(float n);
함수원형3 : long double logl(long double n);
함수설명 : log()함수는 자연로그를 말합니다. 밑이 e 인 로그를 계산해주는 함수입니다. 매개변수로 들어온 n을 Log e 를 해서 반환해줍니다.
▼ C언어 log10 함수 원형(들)
헤더파일 : <math.h>
함수원형1 : double log10(double n);
함수원형2 : float log10f(float n);
함수원형3 : long double log10l(long double n);
함수설명 : log10() 함수는 상용로그를 말합니다. 즉, 밑이 10인 로그를 말합니다. 매개변수로 들어온 n을 Log 10 해서 반환해줍니다.
▽ (잡담) C언어를 공부하시는 여러분들.
이렇게 매개변수 데이터 타입에 따라서 함수명이 다 다르니, 이걸 언제 외우겠습니까!! 그쵸! C++도 공부 하는걸 추천합니다!
(하지만, 만약에 "C++하기가 귀찮다, 힘들다" 하시는 분들은 제 블로그를 구~독 하셔서 여기서 함수를 그때그때 찾으면 됩니다 그쵸?)
2. C++ log 함수 헤더파일과 함수 원형
C++에서는 함수 오버로딩(overloading)이 가능하기 때문에 자료형 상관없이 하나의 함수명으로 이루어져있습니다.
(C언어 공부하시는 분들 C++도 공부하셔요~ 매우 편해요~)
▼ C++ log 함수 원형과 설명
헤더파일 : <cmath>
함수원형1 : double log(double n);
함수원형2 : float log(float n);
함수원형3 : long double log(long double n);
함수설명 : log()함수는 자연로그를 말합니다. 밑이 e 인 로그를 계산해주는 함수입니다. 매개변수로 들어온 n을 Log e 를 해서 반환해줍니다.
▼ C++ log10 함수 원형과 설명
헤더파일 : <cmath>
함수원형1 : double log10(double n);
함수원형2 : float log10(float n);
함수원형3 : long double log10(long double n);
함수설명 : log10() 함수는 상용로그를 말합니다. 즉, 밑이 10인 로그를 말합니다. 매개변수로 들어온 n을 Log 10 해서 반환해줍니다.
▽ (잡담) 얼마나 편하게요?
C++에서는 log() 함수 1개, log10() 함수 1개, 그래서 딱 두개만 외우면 됩니다.
3. C언어 log 함수 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | //C언어 로그함수 예제 //BlockDMask. #include<stdio.h> //prinf #include<math.h> //log, log10 int main(void) { double d1 = 100.0; double d2 = 3; float f1 = 100.f; float f2 = 3; int n1 = 100; int n2 = 3; printf("[double] log10(100.0) : %lf\n", log10(d1)); printf("[double] log(3) : %lf\n", log(d2)); printf("[float] log10f(100.0) : %f\n", log10f(f1)); printf("[float] logf(100.0) : %f\n", logf(f2)); printf("[int to float] log10f(100) : %f\n", log10f((float)n1)); printf("[int to float] logf(3) : %f\n", logf((float)n2)); return 0; } | cs |
▲ C언어 로그함수 예제 결과
log10 함수는 밑이 10인 로그함수 이고, log 함수는 밑이 e인 로그함수 입니다.
매개변수 데이터 타입에 맞는 함수를 불러주어야합니다.
double -> log(), log10()
float -> logf(), log10f();
4. C++ log 함수 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | //C++ 로그함수 예제 //BlockDMask. #include<iostream> //cout #include<cmath> //log, log10 using namespace std; int main(void) { double d1 = 100.0; double d2 = 3; float f1 = 100.f; float f2 = 3; int n1 = 100; int n2 = 3; cout << "[double] log10(100.0) : " << log10(d1) << endl; cout << "[double] log(3) : " << log(d2) << endl; cout << "[float] log10(100.0) : " << log10(f1) << endl; cout << "[float] log(100.0) : " << log(f2) << endl; cout << "[int to float] log10(100) : " << log10(static_cast<float>(n1)) << endl; cout << "[int to float] log(3) : " << log(static_cast<float>(n2)) << endl; return 0; } | cs |
▲ C++ 로그함수 예제 결과
log10 함수는 밑이 10인 로그함수 이고, log 함수는 밑이 e인 로그함수 입니다.
매개변수를 넘겨주면, 각 매개변수 타입에 맞는 함수가 불립니다.
double, float -> log(), log10()
끝까지 읽어주셔서 감사합니다. '좋아요'와 '구독'은 저에게 큰 힘이 됩니다.
'<개인공부> > [C언어, C++]' 카테고리의 다른 글
[C언어/C++] strcpy, strncpy 함수(문자열 복사)에 대해서 (21) | 2019.05.16 |
---|---|
[C언어/C++] gets, puts 문자열 입출력 함수에 대해서. (4) | 2019.04.15 |
[C언어/C++] getchar,putchar 문자 입출력 함수에 대해서. (1) | 2019.04.04 |
[C언어/C++] 팩토리얼 재귀, 반복문 구하기 (factorial 함수) (2) | 2019.04.02 |
[C언어/C++] 절대값 함수 abs, fabs에 대해서. (3) | 2019.03.18 |
[C언어/C++] atoi, atof, atol 함수 (char* to int) (13) | 2019.03.14 |
[C언어/C++] rand, srand, time 랜덤함수에 대해서 (난수생성) (37) | 2019.01.11 |
[C언어/C++] pow, sqrt 함수에 대해서(루트함수, 제곱, 제곱근) (4) | 2019.01.04 |