Sunday, December 24, 2006
C언어] 수학 함수 sqrt() log() log10() 헤더 파일: include math.h
수학 함수를 다룰 때에는 math.h 라는 헤더 파일을 인클루드 해주어야 합니다. 아래 예제와 같습니다.
그리고 수학 함수들은 대부분, 정수(int)가 아닌 실수(double)로 입출력합니다.
파일명: 0.cpp
컴파일 및 실행 결과:
sqrt(2)
이렇게 정수를 직접 넣어주면, error C2668: 'sqrt' : ambiguous call to overloaded function 이런 에러가 납니다.
sqrt(2.0)
이렇게 실수형으로 적어주든지
sqrt( (double) 2 )
또는 이런 식으로 실수로 변환(캐스팅)시켜야 합니다.
▶▶ C언어] 실행시 오류(런타임 에러): runtime error R6002 - floating point not loaded
참고: ▶▶ C언어 VC++] 가우시안 랜덤 난수 발생; 가우스 분포 Gaussian Random Number
그리고 수학 함수들은 대부분, 정수(int)가 아닌 실수(double)로 입출력합니다.
수학 함수 다루기 예제
파일명: 0.cpp
#include <stdio.h>
#include <math.h>
int main(void) {
// 제곱근 함수
double d = 2.0;
double result = sqrt(d);
printf("%f\n", result);
// 출력 결과: 1.414214
// 자연 로그 (Natural Logarithm) 함수
d = 333.0;
result = log(d);
printf("%f\n", result);
// 출력 결과: 5.808142
// 상용 로그(Common Logarithm; 밑(base)이 10인 로그)
d = 333.0;
result = log10(d);
printf("%f\n", result);
// 출력 결과: 2.522444
return 0;
}
#include <math.h>
int main(void) {
// 제곱근 함수
double d = 2.0;
double result = sqrt(d);
printf("%f\n", result);
// 출력 결과: 1.414214
// 자연 로그 (Natural Logarithm) 함수
d = 333.0;
result = log(d);
printf("%f\n", result);
// 출력 결과: 5.808142
// 상용 로그(Common Logarithm; 밑(base)이 10인 로그)
d = 333.0;
result = log10(d);
printf("%f\n", result);
// 출력 결과: 2.522444
return 0;
}
컴파일 및 실행 결과:
D:\Z>cl 0.cpp && 0.exe
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
0.cpp
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
/out:0.exe
0.obj
1.414214
5.808142
2.522444
D:\Z>
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
0.cpp
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
/out:0.exe
0.obj
1.414214
5.808142
2.522444
D:\Z>
sqrt(2)
이렇게 정수를 직접 넣어주면, error C2668: 'sqrt' : ambiguous call to overloaded function 이런 에러가 납니다.
sqrt(2.0)
이렇게 실수형으로 적어주든지
sqrt( (double) 2 )
또는 이런 식으로 실수로 변환(캐스팅)시켜야 합니다.
▶▶ C언어] 실행시 오류(런타임 에러): runtime error R6002 - floating point not loaded
참고: ▶▶ C언어 VC++] 가우시안 랜덤 난수 발생; 가우스 분포 Gaussian Random Number
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home