Boost.Multiprecisionの多倍長整数と多倍長浮動小数点数は、異なる精度間での変換をサポートしています。
たとえば、intやlong型といった組み込みの整数型から、int128_tやcpp_intといった多倍長整数への暗黙変換が可能です。
また、int128_tからint256_tへ、といったより大きい精度への暗黙変換が可能です。
#include <boost/multiprecision/cpp_int.hpp> using namespace boost::multiprecision; int main() { // intからint128_tへの暗黙変換 int i = 3; int128_t i128 = i; // OK // int128_tからint256_tへの暗黙変換 int256_t i256 = i128; // OK }
逆に、より小さい精度への変換は、明示的な型変換を使用する場合のみ可能です。
#include <boost/multiprecision/cpp_int.hpp> using namespace boost::multiprecision; int main() { int256_t i256 = 3; // int128_t i128 = i256; // コンパイルエラー!変換できない int128_t i128 = static_cast<int128_t>(i256); // OK }