1

我正在使用 boost::python::extract<> 将 boost::python::list 中的项目转换为浮点数。我的问题是 python 中的 int -extract<float>似乎将 int->float 视为有效转换,但我只想要真正的浮点对象。有没有办法强制 extract<> 更加保守?

extract<float> value(o);
if (value.check()) {
  // This is true both for floats and ints
  a = value();
}
4

1 回答 1

1

我很确定你不能告诉extract<float>不要将整数转换为浮点数。

您可以做的是查询包装的PyObject

const PyObject* pyo = o.ptr();
if (PyFloat_Check(pyo))
{
    // True only for floats.
    a = extract<float>(o);
}
于 2010-10-05T08:46:28.030 回答