C ++ Вульгарная фракция - PullRequest
4 голосов
/ 10 октября 2011

Есть ли вульгарная дробь, которую можно использовать в качестве переменной?

Например: я хочу разделить целые числа 1 и 3. Результат как int равен 0, как double результат равен0,333333333.Однако я хочу, чтобы результат был точно 1/3, а затем использовал его в других уравнениях программы.

Существует ли переменная, аналогичная целому числу (int), десятичному (double) и т. д. (который объявляется и используется аналогичным образом)?Или я должен сделать это сам?

Сначала я думал, как сделать это сам, но у меня не получилось.

Спасибо!

Ответы [ 3 ]

10 голосов
/ 10 октября 2011

Не на базовом языке, но есть библиотеки, такие как boost :: Rational .

9 голосов
/ 10 октября 2011

Я не уверен, что вы спрашиваете, но посмотрите на Boost.Rational .

С его помощью вы можете написать такой код:

#include <boost/rational.hpp>
boost::rational<int> one(1);
boost::rational<int> three(3);
boost::rational<int> one_third(one / three);
2 голосов
/ 10 октября 2011

В stl нет рациональных чисел, они будут частью stl в c0x - стандарте c ++.Вы можете попробовать boost или написать самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...