将理性投射提升一倍
boost rational cast to double
使用以下针对 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
我希望 rational_cast 输出 249999.5
谁能解释我做错了什么?
修改浮点数的默认格式input/output:
std::cout << std::fixed << boost::rational_cast<double>(v) << std::endl;
加上 std::fixed
。
使用以下针对 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
我希望 rational_cast 输出 249999.5 谁能解释我做错了什么?
修改浮点数的默认格式input/output:
std::cout << std::fixed << boost::rational_cast<double>(v) << std::endl;
加上 std::fixed
。