如何将Python Decimal实例转换为C ++ double?

P45迫在眉睫

在Python本身中,您只需编写Python小数点float(f)在哪里f产生一个double类型(float在Python中称为a )。

但我需要在中执行此操作boost::python我的代码(节略)是

double toDouble(boost::python::object obj)
{
    std::string type = boost::python::extract<std::string>(obj.attr("__class__").attr("__name__"));
    std::string module = boost::python::extract<std::string>(obj.attr("__class__").attr("__module__"));
    std::string cls = module + "." + type;

    if (cls == "decimal.Decimal"){
        double f = boost::python::extract<double>(obj);
        return f;
    }
    
    throw "Oops";
}

但我得到一个错误

没有注册的转换器能够从此类型为October.Python的Python对象产生类型为double的C ++右值。

我该怎么做呢?我无法想象这很复杂。显然我缺少了一些东西。

拔示巴

您需要在if块中的代码

static boost::python::object builtins
    = boost::python::import("builtins");
static boost::python::object function 
    = boost::python::extract<boost::python::object>(builtins.attr("float"));
boost::python::object ret = function(obj);
double f = boost::python::extract<double>(ret);

实际上,我的确在使用Python函数float(obj)

从外观上看,您已经很熟悉了boost::python::extract

float内置的python函数。参见https://docs.python.org/3/library/functions.html因此,第一个语句是包含内置函数的模块的导入。第二条语句获得float功能。

第三个在Boost文档“调用Python函数和方法”中进行调用。

您可能可以将其组合在一起以注册此提取,这可能会知道Boost设计的优美方式,而不仅仅是专门设计模板。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将Complex转换为double

来自分类Dev

如何将“double”转换为“VARIANT”

来自分类Dev

如何将UnsafeMutablePointer <Double>数组转换为Double数组?

来自分类Dev

如何将 CollectionAccumulator[(Double, Double)] 转换为 SparkdataFrame?

来自分类Dev

如何将Number.Double Access列值转换为Decimal?

来自分类Dev

F#-如何将数组转换为nativeptr <double>

来自分类Dev

如何将unsigned long long转换为double

来自分类Dev

如何将Rcpp :: List转换为std :: vector <double>

来自分类Dev

如何将int快速转换为double?

来自分类Dev

如何将QVector <double>转换为QBytearray

来自分类Dev

如何将Vector <Complex>转换为Vector <Double>?

来自分类Dev

如何将'cv :: Mat'转换为'double'?

来自分类Dev

如何将matrix <double>转换为Matrix <float>?

来自分类Dev

С++:如何将long double转换为char [12]?

来自分类Dev

JAVA:如何将String变量转换为Double变量?

来自分类Dev

如何将csv中的行转换为double数组?

来自分类Dev

如何将 Sting `8.1.009.125` 转换为 `double` 数组?爪哇

来自分类Dev

如何将size_t转换为double或int C ++

来自分类Dev

如何将Double转换为Foreign.C.Types.CInt

来自分类Dev

C:将argv [1]转换为double

来自分类Dev

C ++将int转换为double

来自分类Dev

将double [,]转换为IntPtr C#

来自分类Dev

C ++将int转换为double

来自分类Dev

C:将argv [1]转换为double

来自分类Dev

C ++:将wstring转换为double

来自分类Dev

C#将“ double”转换为“ ushort”

来自分类Dev

将double dq从汇编转换为C

来自分类Dev

如何将java.util.List [java.lang.Double]转换为Scala的List [Double]?

来自分类Dev

Java如何将包含多个double的byte []转换为double []

Related 相关文章

热门标签

归档