fabs
실수 절대값을 구합니다. |
Declaration
double fabs( double x ) |
Return value
성공 - 절대값 반환실패 - 없음(실패할 수 없는 함수이기 때문에, 에러를 가리키는 값이 없습니다.)
Parameters
x - 계산할 원본 실수
Detail descriptions
절대값(absolute value)은 숫자에서 부호를 제거한 값을 말합니다. 부호를 제거한 값이기 때문에 3.14와 -3.14는 절대값이 같습니다. 절대값을 표현하는 수학 기호는 |x|로, 두 개의 막대기를 세워놓은 모양입니다. 3.14와 -3.14를 절대값으로 표현해 보면 |3.14|, |-3.14|가 됩니다.
절대값의 결과는 언제나 양수입니다. 부호가 없기 때문에, 음수가 들어오건 양수가 들어오건 모두 양수 결과가 나옵니다. 3.14와 -3.14의 절대값은 3.14입니다.
Remarks
절대값을 계산하는 함수로는 abs(), labs(), fabs()가 있습니다. abs()와 labs()는 정수에 대한 절대값을 반환하고, fabs()는 실수에 대한 절대값을 반환합니다. 그래서 그런지 abs()와 labs()는 math.h와 stdlib.h 파일 모두에 포함되어 있지만, fabs()는 math.h 파일에만 포함되어 있습니다. 주의가 필요한 부분입니다.
절대값은 양수만을 필요로 할 때 사용합니다. 그렇다면 부호를 반대로 변경하는 함수는 무엇일까요? 정답은 함수가 아니라 연산자입니다. 단항 연산자인 - 기호는 부호를 바꾸어줍니다. 양수라면 음수를, 음수라면 양수를 반환합니다. 변수 value의 부호를 바꾸려면 -value처럼 사용하면 되므로 별도의 함수가 필요하지 않습니다.
Header files
<math.h>
Example codes
- 두 개의 실수 d1과 d2 사이의 거리를 구하려고 합니다. d1에는 -3.1, d2에는 -8.2를 입력했습니다.
- 첫 번째 결과는 단순하게 뺀 값이고, 두 번째 결과가 fabs()를 호출한 절대값입니다.
- 뺄셈은 어떻게 빼느냐에 따라 부호가 다른 값이 나오는데, 결과에서 단순히 부호를 없애면 절대값이 나옵니다. 절대값은 이처럼 순서에 상관없이 결과를 계산할 때 아주 유용합니다. (d1-d2)와 (d2-d1)의 결과가 절대값을 적용하면 똑같은 값이 되는 원리입니다.
- 코드 마지막에는 fabs()를 사용하지 않을 경우, if문을 사용해야 한다는 것을 보여줍니다. if문을 사용해서 어떤 변수가 큰 값을 갖느냐에 따라 다른 코드를 사용하고 있습니다.
#include <stdio.h> #include <math.h> void main() { double d1, d2; printf( "실수 : " ); scanf( "%lf %lf", &d1, &d2 ); printf( "d1-d2 : %f, %f\n", d1-d2, fabs(d1-d2) ); printf( "d2-d1 : %f, %f\n", d2-d1, fabs(d2-d1) ); if( d1 >= d2 ) printf( "d1-d2 : %f\n", d1-d2 ); else printf( "d2-d1 : %f\n", d2-d1 ); } [출력 결과] 실수 : -3.1 -8.2 d1-d2 : 5.100000, 5.100000 d2-d1 : -5.100000, 5.100000 d1-d2 : 5.100000 |
이 문서에 대한 모든 권리는 www.printf.co.kr에 있습니다.
댓글 없음:
댓글 쓰기