从Python浮点转换为C++双精度时的精度损失

2024-09-27 23:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在我的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代码返回的值是一个精度更高的浮点值。 如何获得完全的精度?在


Tags: 方法代码程序精度数字pyobject损失ret
2条回答

打印类型(PyList_GetItem(_ret,i))

我打赌它会显示浮动。在

编辑:在Python代码中,而不是C++代码中。在

假设Python对象包含以双精度存储的浮点值,那么您的代码如您所期望的那样工作。在

很可能你只是错误地诊断了一个不存在的问题。我的猜测是您正在查看调试器中的值,该调试器仅以有限的精度显示值。或者你把它们打印出来的精度有限。在

相关问题 更多 >

    热门问题