我正在我的c++程序中嵌入python代码。 使用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));
}
retVals[i]的精度只有6,而python代码返回的值是一个精度更高的浮点值。 如何获得完全的精度?在
打印类型(PyList_GetItem(_ret,i))
我打赌它会显示浮动。在
编辑:在Python代码中,而不是C++代码中。在
假设Python对象包含以双精度存储的浮点值,那么您的代码如您所期望的那样工作。在
很可能你只是错误地诊断了一个不存在的问题。我的猜测是您正在查看调试器中的值,该调试器仅以有限的精度显示值。或者你把它们打印出来的精度有限。在
相关问题 更多 >
编程相关推荐