함수의 인수 중 특정 인수는 일반적으로 사용하는 디폴트 값이 있고, 특별한 경우에만 다른 값을 사용하는 경우가 있다. 이런 경우에는 디폴트 인수를 사용할 수 있다.
[소스코드 3-8]은 반올림을 하는 함수 Round()룰 사용하여 원하는 자리에서 반올림을 할 수 있도록 하는 프로그램이다.
#include <iostream>
#include <cmath>
using namespace std;
double Round(double x, int d = 0);
int main() {
double a;
cout << "값 = ";
cin >> a;
cout << "반올림 --> " << Round(a) << endl;
cout << " " << Round(a,1) << endl;
cout << " " << Round(a, 2) << endl;
cout << " " << Round(a, 3) << endl;
return 0;
}
// 반올림 함수
// 인수 double x : 반올림할 값
// int d : 반올림하여 남길 소수 부분의 자릿수
// 반환 반올림한 값(double)
double Round(double x, int d) {
double a = x >= 0 ? 0.5 : -0.5; // x가 0보다 같거나 크면 0.5아니면 -0.5
double pow10 = pow(10, d);
return trunc(x * pow10 + a) / pow10;
}
====== 결과 ======
값 = 12.3456
반올림 --> 12
12.3
12.35
12.346
함수 Round()는 2개의 형식 매개변수를 갖는다. 첫째 매개변수는 반올림할 값이고, 둘째 매개변수는 반올림 후 남게 될 소수 부분의 자릿수이다. 이때 Round() 함수 원형에서는 소수 부분의 지릿수에 디폴트 값으로 0이 지정되어 있다. 따라서 Round(a)와 같이 두 번째 매개변수의 값을 넣지 않고 호출하면 Round()의 매개변수 d에는 자동적으로 0이 전달된다. 만일 디폴트 값이 아닌 다른 값을 전달하려면 명시적으로 두 번째 인자에 값을 넣으면 된다.
함수 Round()에서 사용한 함수 pow(a,b)는 $a^b$을 계산하는 함수이고, trunc(a)는 a의 정수 부분만 남겨 놓는 함수이다. 반올림을 할 값에 $10^d$을 곱하고, 이 값에 양수라면 0.5, 음수라면 -0.5를 더하여 정수 부분만 남긴 다음 다시 $10^d$으로 나누어 반올림한 값을 구하고 있다.
'Programming Languages > C++' 카테고리의 다른 글
[함수]-inline 함수 (0) | 2020.06.05 |
---|---|
[함수]-함수의 다중정의 (0) | 2020.06.04 |
[함수]-인수의 전달-const 매개변수 (0) | 2020.05.21 |
[함수]-인수의 전달-참조 호출 (0) | 2020.05.20 |
[함수]-인수의 전달-값 호출 (0) | 2020.05.15 |