除法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
!=
这是预期的吗?
考虑到真的需要十进制值,还有其他更合适的类型吗?
我是否应该截断或舍入到神奇的十进制数字?