1

boost::rational クラスで、もしそうなら

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

結果は になります1/12/2合理的なクラスの周りにラッパーを書く必要なしにこれを維持する方法はありますか? 理想的には、これを足し算にも当てはめたいので、

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

4/2代わりに2/1

どんな助けでも大歓迎です!

4

1 に答える 1

1

設計上、次のことはできません。

最後の基本操作は、有理数の正規化です。この操作は、有理数が構築される (およびその場で割り当てられる) たびに実行されます。他のすべての操作は、正規化された状態で合理性を維持するように注意します。正規化には、1 つの gcd と 2 つの分割に相当するコストがかかります。

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

于 2014-05-08T09:37:56.147 に答える