C++ 有Python的等价物吗';分数(bignum/任意精度分数/有理数类)?

C++ 有Python的等价物吗';分数(bignum/任意精度分数/有理数类)?,c++,math,fractions,bignum,arbitrary-precision,C++,Math,Fractions,Bignum,Arbitrary Precision,我想对有理数做一些任意精度的数学计算,例如: >>> from fractions import Fraction >>> Fraction(318483434, 1980410394309430943904903) * Fraction(34913483843843843843, 902490524905498548954894898889923232) Fraction(5559683113745453573439198431, 8936508081443

我想对有理数做一些任意精度的数学计算,例如:

>>> from fractions import Fraction
>>> Fraction(318483434, 1980410394309430943904903) * Fraction(34913483843843843843, 902490524905498548954894898889923232)
Fraction(5559683113745453573439198431, 893650808144311844544465740142994088494601632782777989203248)

有没有一个库可以让我以一种简单的方式完成这项工作?

如果您使用boost,您可以将
boost::rational
boost::multiprecision::cpp_int
(任意精度整数)结合使用:

:

#include <boost/rational.hpp>
#include <boost/multiprecision/cpp_int.hpp>

using boost::multiprecision::cpp_int;

typedef boost::rational<cpp_int> fraction_t;
template <typename A, typename B>
fraction_t fraction(A a, B b) 
{
    return fraction_t(cpp_int(a), cpp_int(b));
}
cout << fraction(318483434, "1980410394309430943904903") * 
        fraction("34913483843843843843", "902490524905498548954894898889923232") << endl;
5559683113745453573439198431/893650808144311844544465740142994088494601632782777989203248