你要的东西,STL 库已经有了,叫 std::ratio ,是 C++11 标准的模板类。在 C++11 标准之后,C++委员会加入了大量高等数学相关的函数,beta函数、gamma函数、黎曼Zeta函数、球面贝塞尔函数等等,少不了优秀的先驱库 boost 的功劳。Standard library header en.cppreference.com
std::ratio_add、std::ratio_subtract、std::ratio_multiply、ratio_divide 对应加减乘除四则运算,然后分数间比较大小的函数也有。下面用 std::ratio 来做一下加减乘除运算:
#include #include
int main()
{
using two_third = std::ratio<2, 3>;
using one_sixth = std::ratio<1, 6>;
using sum = std::ratio_add;
std::cout << "2/3 + 1/6 = " << sum::num << '/' << sum::den << '\n';
using diff = std::ratio_subtract;
std::cout << "2/3 - 1/6 = " << diff::num << '/' << diff::den << '\n';
using product = std::ra