#include <iostream>
#include <boost/rational.hpp>
using namespace std;
int main()
{
boost::rational<int> a( 4, 3 ); // 4/3
boost::rational<int> b( 1, 2 ); // 1/2
boost::rational<int> c = a + b; // 4/3 + 1/2 = 11/6
cout << c << endl;
a = c - 5; // 11/6 - 5 = -19/6
cout << a << endl;
c = 4;
b *= -c; // 1/2 * -4 = -2
cout << b << endl;
double d = boost::rational_cast<double>( a );
cout << d << endl;
int n = boost::rational_cast<int>( b );
cout << n << endl;
return 0;
}
11/6 -19/6 -2/1 -3.16667 -2
有理数です。分数です。おわり。
…というのも芸がないのですが、それ以上書くこと無いですし。