python ctypes 精度

问题描述 投票:0回答:1

我正在使用

ctypes
创建 C++ 库 (.so) 的包装器。我在论证的精确性方面遇到了一些麻烦。当我将
math.pi
作为
double
传递时,我只能得到六位小数的精度,即 3.141593000。当我计算正弦和余弦时,这会引入一个小但重要的错误。

据我了解,

double
应该有15位小数精度,而
math.pi
确实在Python中给出了15位小数。在这种情况下可能会出现什么问题?还有其他人遇到过这个问题吗?你是怎么解决的?

python c++ double precision ctypes
1个回答
0
投票

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
,但可能使用其他精度较低的双精度类型。查看
ctypes
类型转换表
以查看所有 ctypes 转换。

© www.soinside.com 2019 - 2024. All rights reserved.