#включает  </мультиплексия/cpp_int.hpp>
namespace boost{ namespace multiprecision{
typedef rational_adaptor<cpp_int_backend<> >    cpp_rational_backend;
typedef number<cpp_rational_backend>         cpp_rational;
}} 
Тип cpp_rational_backend используется через typedef boost::multiprecision::cpp_rational. Он обеспечивает рациональный тип чисел, который является заменой для родных типов чисел C++, но с неограниченной точностью.
Как и обычные преобразования из арифметических и струнных типов, экземпляры cpp_rational являются копируемыми и присваиваемыми из типа cpp_int.
Существует также два конструктора аргументов, которые принимают числитель и знаменатель: оба типа cpp_int.
Существуют также функции, не являющиеся членами:
cpp_int numerator(const cpp_rational&);
cpp_int denominator(const cpp_rational&);
который возвращает числитель и знаменатель числа.
Что вы должны знать при использовании этого типа:
- По умолчанию построенные cpp_rationals имеют значение ноль.
- Разделение на ноль приводит к выпадению std::overflow_error.
- Конверсия из строки приводит к тому, что std::runtime_errorвыбрасывается, если строка не может быть интерпретирована как действительное рациональное число.
#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
int main()
{
   using namespace boost::multiprecision;
   cpp_rational v = 1;
   
   for(unsigned i = 1; i <= 1000; ++i)
      v *= i;
   v /= 10;
   std::cout << v << std::endl; 
   std::cout << numerator(v) << std::endl;
   std::cout << denominator(v) << std::endl;
   cpp_rational w(2, 3);  
   std::cout << w << std::endl; 
   return 0;
}