在Python中复制C不动点数学

2024-09-26 22:55:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python中复制一个最初用C编写的DSP算法,诀窍是我还需要保留C版本中32位不动点变量的相同行为,包括有限精度会引入的任何数值错误。在

我认为目前可用的选项有:

我知道python Decimal类型可以用于定点算术,但是据我所知,没有办法调整Decimal变量的大小。据我所知,numpy不支持进行定点操作。在

我做了一个快速的实验,看看摆弄小数精度是如何影响事情的:

>>> a = dc.Decimal(1.1)
>>> a
Decimal('1.100000000000000088817841970012523233890533447265625')
>>> sys.getsizeof(a)
104
>>> dc.getcontext().prec = 16
>>> a = dc.Decimal(1.1)
>>> a
Decimal('1.1999999999999999555910790149937383830547332763671875')
>>> sys.getsizeof(a)
104

精度更改前后有变化,但仍有大量小数位。变量的大小仍然相同,并且后面有很多小数位。在

我怎样才能最好地实现最初的目标?我知道pythonctypes有C语言的浮点,但我不知道这在这种情况下是否有用。我不知道是否有一种方法可以精确地模仿Python中C类型的定点数学。在

谢谢!在


Tags: 版本算法类型错误sys精度dc定点

热门问题