我有以下代码:
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。我认为该过程以某种方式被破坏并获得其他值,但它似乎适用于不同于零的值。
发生了什么???谢谢