ブースト 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
私は Rational_cast が 249999.5 を出力すると予想しますが、私が間違っていることを誰か説明できますか?