2

我有以下代码:

boost::multiprecision::cpp_dec_float_100 frn = 
    boost::multiprecision::pow(boost::multiprecision::cpp_dec_float_100(0),
      boost::multiprecision::cpp_dec_float_100(2));
std::cout << "Trial1: " << frn << std::endl;

frn = boost::multiprecision::pow(boost::multiprecision::cpp_dec_float_100(2),
    boost::multiprecision::cpp_dec_float_100(0));
std::cout << "Trial2: " << frn << std::endl;  

frn = boost::multiprecision::pow(boost::multiprecision::cpp_dec_float_100(2),
    boost::multiprecision::cpp_dec_float_100(2));
std::cout << "Trial3: " << frn << std::endl;

frn = boost::multiprecision::pow(boost::multiprecision::cpp_dec_float_100(2),
    boost::multiprecision::cpp_dec_float_100(3));
std::cout << "Trial4: " << frn << std::endl;

frn = boost::multiprecision::pow(boost::multiprecision::cpp_dec_float_100(2),
    boost::multiprecision::cpp_dec_float_100(4));
std::cout << "Trial5: " << frn << std::endl;

frn = boost::multiprecision::pow(boost::multiprecision::cpp_dec_float_100(2),
    boost::multiprecision::cpp_dec_float_100(5));
std::cout << "Trial6: " << frn << std::endl;

当然,我已经包含了库和所有内容。我只是在主程序中展示了一个片段。

我得到这个输出:

Trial1: 1
Trial2: 1
Trial3: 4
Trial4: 8
Trial5: 16
Trial6: 32

问题在于第一个值。我要求将 0 提高到 2,但我得到 1 而不是 0(好像我试图将 2 提高到 0)。我认为参数是反转的,所以我尝试反转它们,但仍然得到 1。我认为该过程以某种方式被破坏并获得其他值,但它似乎适用于不同于零的值。

发生了什么???谢谢

4

0 回答 0