повысить рациональное приведение к удвоению

Используя следующий фрагмент кода, скомпилированный с boost 1.62:

#include <boost/rational.hpp>
#include <iostream>

int main() {
auto val = boost::rational<int64_t>(499999, 2);
std::cout << val << std::endl;
std::cout << boost::rational_cast<double>(val) << std::endl;
}

Я получаю следующий вывод:

499999/2
250000

Я ожидаю, что рациональный_каст выдаст 249999,5
Может кто-нибудь объяснить, что я делаю не так?

2

Решение

Измените форматирование по умолчанию для ввода / вывода с плавающей точкой:
std::cout << std::fixed << boost::rational_cast<double>(v) << std::endl; добавлять std::fixed к этому.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]