C++ float 到 Python float 的错误转换

标签 c++ python swig

我正在使用 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 存储为 floatdouble 时 C++ 看到的内容>:http://ideone.com/HvfZb

关于C++ float 到 Python float 的错误转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8956535/

相关文章:

python - 如果输入在索引之外,如何打印列表中的特定项目

python - Python 文本生成的最佳实践

python - Django: NoReverseMatch at/'myapp' 不是注册的命名空间

java - 是否可以一起使用 Java、SWIG 和 Rust?

python - SWIG C++/Python 绑定(bind)和支持带有 std::enable_if 的条件成员

c++ - protobuf 无法序列化

c++ - 将返回 Foo 的函数的结果分配给 const Foo&

c++ - glMultMatrix/glLoadMatrix 比 glRotatef 或 glTranslatef 更有效?

C# COM 服务器 - 在 C++ 中测试

c++ - 如何通过 Windows 编译 SWIG