我正在使用 SWIG 将我的 C++ 代码包装到 Python 中。但是 float 的转换就奇怪了。 例如,如果我有下面的函数(用 C++ 编写)
float foo() {
float x=62.02;
return x;
}
并在 Python 中执行它(在用 SWIG 包装之后)
>>> import mymodule
>>> mymodule.foo()
62.02000045776367
>>>
它返回 62.02000045776367
而不是 62.02
。
有没有办法告诉 SWIG 如何进行正确的转换?
最佳答案
这是正确的转换,只是您不能用 float
精确表示小数 62.02
,就像您不能表示分数 2/3
十进制。
您可以通过这段简短的代码了解更多信息,您可以在其中看到将 62.02
存储为 float
和 double
时 C++ 看到的内容>:http://ideone.com/HvfZb
关于C++ float 到 Python float 的错误转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8956535/