如何解决boost :: multiprecision :: cpp_dec_float除法错误

时间:2019-07-17 02:42:31

标签: c++ floating-point boost-multiprecision

除以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
!=

这是预期的吗?

考虑到确实需要十进制值,还有其他更合适的类型吗?

我是否希望截断或舍入到不可思议的十进制数字?

0 个答案:

没有答案