C++ ratio 분수 계산 - 분자, 분모 저장

Notepad96

·

2020. 11. 20. 14:35

300x250

 

 

 
 

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. 참 조

 

 

ratio - C++ Reference

yottaratio<1000000000000000000000000,1>1024 *

www.cplusplus.com

 

300x250