我正在将python代码嵌入我的c++程序中。PyFloat_AsDouble的使用正在造成精度的下降。它只保持6位精确数字。我的程序对精度非常敏感。有已知的解决办法吗?下面是相关的C++代码:
_ret = PyObject_CallObject(pFunc, pArgs);
vector<double> retVals;
for(size_t i=0; i<PyList_Size(_ret); i++){
retVals[i] = PyFloat_AsDouble(PyList_GetItem(_ret, i));
}
retValsi的精度只有6,而python代码返回的值是一个可以具有更高精度的浮点。如何获得完整的精度?
发布于 2014-04-07 14:14:56
假设Python对象包含以双精度存储的浮点值,那么您的代码将按照您的预期工作。
很可能你只是在错误地诊断一个不存在的问题。我的猜测是,您正在查看调试器中的值,调试器仅以有限的精度显示这些值。或者你是在以有限的精度打印出来。
发布于 2014-04-07 14:16:03
打印类型(PyList_GetItem(_ret,i))
我打赌它会浮起来。
编辑:在python代码中,而不是C++代码中。
https://stackoverflow.com/questions/22923983
复制相似问题