如何防止boost::python::extract<float>接受int
我正在使用 boost::python::extract<> 来把 boost::python::list 中的项目转换成浮点数(float)。我遇到的问题是关于 Python 中的整数(int)——extract<float>
似乎把整数转换成浮点数当作有效的转换,但我只想要真正的浮点数对象。有没有办法让 extract<> 更严格一点?
extract<float> value(o);
if (value.check()) {
// This is true both for floats and ints
a = value();
}
1 个回答
1
我很确定你不能让 extract<float>
不把整数转换成浮点数。
你可以做的是查询被包装的 PyObject
:
const PyObject* pyo = o.ptr();
if (PyFloat_Check(pyo))
{
// True only for floats.
a = extract<float>(o);
}