如何将boost::multiprecision::int512\u t转换为boost::multiprecision::cpp\u dec\u float\u 100?

如何将boost::multiprecision::int512\u t转换为boost::multiprecision::cpp\u dec\u float\u 100?,boost,double,precision,Boost,Double,Precision,我最近正在使用boost::multiprecision。我的代码如下: #include <iostream> #include <boost/multiprecision/cpp_int.hpp> #include <boost/multiprecision/cpp_dec_float.hpp> namespace bm = boost::multiprecision; int main(void) { bm::int512_t a = 12;

我最近正在使用boost::multiprecision。我的代码如下:

#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
#include <boost/multiprecision/cpp_dec_float.hpp>

namespace bm = boost::multiprecision;

int main(void) {
    bm::int512_t a = 12;
    bm::cpp_dec_float_100 f = a;

    std::cout << f * 3.14 << std::endl;

    return 0;
}
它没有被编译。错误显示:

b.cpp: In function ‘int main()’:
b.cpp:9:28: error: conversion from ‘boost::multiprecision::int512_t {aka boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<512u, 512u, (boost::multiprecision::cpp_integer_type)1u, (boost::multiprecision::cpp_int_check_type)0u, void> >}’ to non-scalar type ‘boost::multiprecision::cpp_dec_float_100 {aka boost::multiprecision::number<boost::multiprecision::backends::cpp_dec_float<100u> >}’ requested
  bm::cpp_dec_float_100 f = a;
                        ^

How can I convert it correctly? Thanks a lot!

我自己也不熟悉这种东西,但我一直在使用boost multi_precision, 我想下面的方法应该行得通


bm::cpp_dec_float_100 f=bm::cpp_dec_float_100 fa

f=静态_casta;似乎有效。我不知道它是否正确。@cv_和_他我已经测试过了,它是正确的!