c++ python ctypes精度

mu0hgdu0  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(118)

我正在使用ctypes创建一个C++库(.so)的 Package 器。我在一个论点的精确性上遇到了一些麻烦。当我把math.pi作为double传递时,我只得到了六位小数的精度,即:3.141593000.当我计算西内斯和余弦时,这会引入一个很小但很重要的错误。
据我所知,double应该有15个小数位的精度,而math.pi在python中确实有15个小数位。在这种情况下会有什么问题呢?有其他人遇到过这个问题吗?你是怎么解决的?

vd8tlhqk

vd8tlhqk1#

AFAIK,将math.pi传入ctypes.c_double应该返回c_double(3.141592653589793)。下面是Python 3.11.1中的一个例子:

>>> import math
>>> import ctypes
>>> ctypes.c_double(math.pi)
c_double(3.141592653589793)

我唯一的猜测是,您没有使用ctypes.c_double,而可能是其他精度较低的double类型。查看ctypes type conversion table以查看所有ctypes转换。

相关问题