首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从python到C++ double转换时的精度损失

从python到C++ double转换时的精度损失
EN

Stack Overflow用户
提问于 2014-04-07 22:04:46
回答 2查看 1K关注 0票数 0

我正在将python代码嵌入我的c++程序中。PyFloat_AsDouble的使用正在造成精度的下降。它只保持6位精确数字。我的程序对精度非常敏感。有已知的解决办法吗?下面是相关的C++代码:

代码语言:javascript
运行
复制
_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代码返回的值是一个可以具有更高精度的浮点。如何获得完整的精度?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-07 22:14:56

假设Python对象包含以双精度存储的浮点值,那么您的代码将按照您的预期工作。

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

票数 2
EN

Stack Overflow用户

发布于 2014-04-07 22:16:03

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

我打赌它会浮起来。

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22923983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档