我有一个PyFloatObject ,我想将其转换为C float 但是, PyObjectFloat仅提供对double的转换。 我可以安全地将double转换为float,还是有一个将PyObject转换为float的函数,即PyObject_AsFloat

#1楼 票数:2

文档

浮点数通常使用C中的double来实现;

换句话说,Python的float类型仅仅是一个C double ,所以没有神奇的Python函数为Python转换float到一个C float比通常可用C,将其他doublefloat

#2楼 票数:0

简短的答案是肯定的,只要您的“两倍”适合(相对于幅度)成为“浮动”即可。 但是,您可能需要四舍五入或将其截断为单精度。

使用IEEE 754浮点表示法...

“浮点型定义为IEEE 754单精度,双精度定义为双精度,长双精度定义为IEEE 754扩展精度或某种形式的四精度(如果可用)(例如x86或x86-64上的Intel 80位双精度扩展精度)平台),否则为双精度。以前,所有C90浮动运算都定义为以双精度进行,随后四舍五入为单精度,以便在必要时存储结果。”

关于'754的数据来自http://en.wikipedia.org/wiki/C99 (维基百科上的c99 c规范描述),虽然它不是python特定的,IEEE 754是通用的,而不是c特定的)

您正在使用哪个版本的python? 您可能要使用(来自https://docs.python.org/2/c-api/float.html

double PyFloat_AsDouble(PyObject * pyfloat)返回pyfloat内容的C double表示形式。 如果pyfloat不是Python浮点对象,但具有float ()方法,则将首先调用此方法将pyfloat转换为float。 此方法在失败时返回-1.0,因此应调用PyErr_Occurred()来检查错误。

#3楼 票数:0

sprintf放入缓冲区,然后跟atoi似乎可以解决问题

  ask by ragingSloth translate from so

未解决问题?本站智能推荐:

1回复

将Python长整数转换为Cchar数组

我正在使用Python / C API并希望C函数采用Python长整数参数nPyLong ,并将其转换为基数10中的char数组nString 。以下是我想要做的事情的片段。 API参考提到了一个函数PyObject* PyLong_FromString(char *str, char *
1回复

将PyInt转换为CInt

我需要将PyInt转换为C int。 用我的代码 pValue是一个PyObject,即PyList。 我遇到的问题是PyList_Size没有返回正确的列表大小(计数应该为5,但它给了我600万),或者数据类型存在问题,因为im代码是在C代码中连接到python脚本的。 理想情况下,
2回复

使用C扩展Python:将PyStringObject转换为PyIntObject

使用CPython 2.7,可以将PyStringObject对象直接转换为PyIntObject吗? 目前,我转换一个Python字符串转换成使用两个功能,一个Python整数PyString_AsString和PyInt_FromString : 这工作正常,但我想知道是否可以在单个
1回复

将多维numpy数组转换为ctypes数组的最有效方法

您好,我正在python中使用ctypes模块从python运行一些图像处理C代码,以优化我的代码,并减少执行时间。 为此,我将图像读取到一个numpy数组中,然后使用内核将2D卷积应用于该图像,从而生成过滤后的图像。 我想要在C中达到相同的效果,以节省一些执行时间。 因此,问题的第一
1回复

ctypes.ArgumentError:不知道如何转换参数

我在C库中定义一个函数,如下所示: 我想在python中使用它,所以我编写以下python代码: 然后我运行这个python程序。 我遇到了错误说: 我的代码出了什么问题? 谢谢大家的帮助!
1回复

NumPyC-API:将类型对象转换为类型编号

功能 将NumPy标量类型(NPY_BOOL,NPY_BYTE,...)的类型编号转换为相应的类型对​​象。 你如何进行相反的转换,从NumPy标量类型的类型对象到相应的类型号? 编辑:以下代码基于kwatford的答案。 它接受类型对象(如int和numpy.int16)和字符串
1回复

Python-将PyInt转换为Cint

我目前在尝试检索我的python代码返回的值时遇到问题。 我的代码草稿是: 我想有一种方法可以执行此操作,而无需经过长时间的转换和int cast。 有人知道吗? 感谢您考虑我的要求。
1回复

错误:“PyObject”类型的值(也称为“_object”)在上下文中不可转换为“bool”

我正在将python模块作为PyObject传递给C。 我想使用以下形式检查我的C代码中此值是否为NONE: 我收到以下错误。 我如何从PyObject转换为布尔值,与Python的if函数的行为类似。 值得注意的是,当tmp是boost::python::object变量时,此命令可