C++浮点转换为Python浮点错误转换
C++ float into Python float wrong conversion
我正在使用SWIG将C++代码封装到Python中。但是浮点数字的转换很奇怪。例如,如果我有下面的函数(用C++编写)
float foo() {
float x=62.02;
return x;
}
并在Python 中执行(用SWIG包装后)
>>> import mymodule
>>> mymodule.foo()
62.02000045776367
>>>
它返回CCD_ 1而不是CCD_。
有没有办法告诉SWIG如何进行正确的转换?
这是正确的转换,只是你不能用float
精确地表示小数点62.02
,就像你不能用小数点表示分数2/3
一样。
通过这个简短的代码,您可以看到更多内容,当您将62.02
存储为float
和double
时,您将看到C++所看到的内容:http://ideone.com/HvfZb
除了无损float
->62.02000045776367
0转换之外,没有任何转换正在进行。
CCD_ 11不能精确地表示为C CCD_。执行float x=62.02
时,变量将包含您提到的值。
我强烈推荐阅读《每一位计算机科学家都应该知道的关于浮点运算的知识》。
相关文章:
- C++使用params创建线程函数会导致转换错误
- 为什么g++在未执行的代码处标记强制转换错误
- 为什么C++在将浮点数转换为字符时没有显示缩小转换错误?
- 如何在构建对象堆栈时解决转换错误?
- 执行具有转换错误的过程
- 指向类成员函数的指针中存在类型转换错误
- 为什么我在这里收到C++没有已知的转换错误?
- 增加图形转换错误
- 尝试向 COM 对象添加另一个接口时出现静态强制转换错误 C2440
- 返回带有另一个类的数据成员的构造函数?遇到转换错误?
- 指针和双重转换错误,代码没有
- 自定义函数转换错误?
- 将 C 程序转换为具有大量字符* 和无符号字符转换错误的C++
- 如何在我使用过的Arduino库之一中固定构造函数中的转换错误
- 试图使用strCMP时的char转换错误
- 我在 TSP 的C++解决方案中遇到转换错误
- "double(*)(string, double, double)"尝试传递函数C++时"double"转换错误
- 此语法中的构造函数转换错误
- Opengl 精度转换错误编译错误 E0415
- 无效的转换错误和无效的类型