C++ ratio 분수 계산 - 분자, 분모 저장
Notepad96
·2020. 11. 20. 14:35
1. ratio
ratio를 사용하기 위해서는 ratio 클래스를 include 해주어야 한다.
ratio를 사용하면 비율 즉, 분수에서 분모와 분자를 저장할 수 있다.
그리고 사칙연산(+, -, *, /) 를 지원하는 템플릿또한 정의되어 있어 간단하게 분수간 사칙연산을 할 수 있다.
이외에도 비교하는 템플릿또한 정의되어 있어서 두 분수가 동일한지, 아니면 어느 분수가 더욱 큰 값인지, 크거나 같은 값인지를 비교할 수 있다.
이외에도 nano, micro, kilo 처럼 표준 비율들 또한 정의되어 있어서 사용할 수 있다.
하지만 ratio를 생성할 시 상수를 사용해야 하므로 실수형 상수의 분모, 분자를 따로 저장 하여서 사용하고자 할 때 정도 사용할 수 있을 것 같다.
2. 코 드
환경 : Visual studio 2019
#include <iostream>
#include <ratio>
using namespace std;
int main() {
typedef ratio<1, 3> one;
typedef ratio<2, 4> two;
cout << "one = " << one::num << "/" << one::den << "\n";
cout << "two = " << two::num << "/" << two::den << "\n";
cout << "======================================\n";
// 더하기
typedef ratio_add<one, two> sum;
cout << "덧셈 : 1/3 + 2/4 = " << sum::num << "/" << sum::den << "\n";
double num = (double)sum::num / sum::den;
cout << "숫자로 변환 : " << num << "\n\n";
typedef ratio_subtract<one, two> sub; // 빼기
typedef ratio_multiply<one, two> mul; // 곱하기
typedef ratio_divide<one, two> div; // 나누기
cout << "나누기 : 1/3 / 2/4 = " << div::num << "/" << div::den << "\n";
cout << "======================================\n";
if (ratio_less<one, two>::value) {
cout << "one은 two 미만이다.\n";
}
else {
cout << "two은 one 이상이다.\n";
}
cout << "======================================\n";
cout << "kilo = " << kilo::num << "/" << kilo::den << "\n";
cout << "giga = " << giga::num << "/" << giga::den << "\n";
cout << "micro = " << micro::num << "/" << micro::den << "\n";
return 0;
}
- 분자의 경우 ::num 으로 분모의 경우 ::den 으로 접근이 가능하다.
- 더하기, 빼기, 곱하기, 나누기는 각각 ratio_* 형태를 갖으며 add, substract, multiply, divide 로서 계산한 값을 저장할 수 있다.
- 비교 템플릿 또한 ratio_* 형태를 갖으며 equal, less, greater, less_equal 와 같이 동일한지, 이상인지, 미만인지를 선택하여 검사할 수 있다.
- kilo, giga 처럼 표준 비율들은 이미 정의되어 있어서 바로 사용할 수 있다.
3. 참 조
'C++ > STL' 카테고리의 다른 글
C++ Random - 범위 랜덤 수 구하기 (0) | 2020.11.24 |
---|---|
C++ String to int, int to String - 문자열 숫자 형변환 (0) | 2020.11.20 |
C++ isupper, islower, isdigit - 문자 대소문자, 숫자 판별 (0) | 2020.11.20 |
C++ min, max 함수 (0) | 2020.11.19 |
C++ time, clock 시간 측정, 현재 시간 구하기 (0) | 2020.11.18 |