Boost::rational -防止默认减少(即2/2到1/1)



在boost::rational类中,如果我执行

boost::rational<int> r(2,2);
std::cout << r << std::endl;

结果将是1/1。是否有一种方法可以将其保持为2/2,而不必在rational类周围编写包装器?理想情况下,我希望这也适用于加法,所以像

这样的东西
boost::rational<int> r(2,2);
boost::rational<int> s(2,2);
std::cout << r + s << std::endl;

会生成4/2而不是2/1

任何帮助将不胜感激!

你不能,根据设计:

最后一个基本操作是将一个有理归一化。无论何时构造一个有理(并在适当的位置分配),都会执行此操作。所有其他操作都小心地将理数保持在规范化状态。规范化的成本相当于一个gcd和两个除法。

从http://www.boost.org/doc/libs/1_55_0/libs/rational/rational.html

相关内容

  • 没有找到相关文章

最新更新