除以boost::multiprecision::cpp_dec_float
的除法有一些舍入错误,如下所示:
#include <iostream>
#include <boost/multiprecision/cpp_dec_float.hpp>
using my_t = boost::multiprecision::number<boost::multiprecision::cpp_dec_float<20, std::int32_t>>;
int main()
{
my_t a = 150;
my_t b = 300;
my_t c = a / b;
std::cout << c.str() << std::endl;
std::cout << ((c==my_t(0.5))?"==":"!=") << std::endl;
return 0;
}
输出:
0.5000000000000000000000000000000000000000136852
!=
这是预期的吗?
考虑到确实需要十进制值,还有其他更合适的类型吗?
我是否希望截断或舍入到不可思议的十进制数字?