我试图在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类型的定点数学。在
谢谢!在
目前没有回答
相关问题 更多 >
编程相关推荐