En utilisant le bout de code suivant compilé contre 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;
}
J'obtiens le résultat suivant :
499999/2
250000
Je m'attendrais à ce que rational_cast donne 249999.5. Quelqu'un peut-il m'expliquer ce que je fais mal ?