python中是否有用于定点转换和操作的模块?

python中是否有用于定点转换和操作的模块?,python,fixed-point,Python,Fixed Point,我想知道是否有浮点转换为定点的模块。这里提到的固定点在基数2中,因此一些示例如下: 定点表达式=2^1+2^0+a*2^-1+b*2^-2 我发现一些模块可以这样做: 输入为0.68751(浮点),并指定一些精度(如3) 输出为0.6875,原因是0.5+0.125+0.0625 我见过模块Decimal,它有quantize方法,几乎满足了我的要求,但它是十进制的,而不是二进制的。是的,有一个python模块用于此,fxpmath。有关更多信息,请访问: 这里有一个例子: 从fxpmath导

我想知道是否有浮点转换为定点的模块。这里提到的固定点在基数2中,因此一些示例如下:

定点表达式=2^1+2^0+a*2^-1+b*2^-2

我发现一些模块可以这样做:

输入为0.68751(浮点),并指定一些精度(如3)

输出为0.6875,原因是0.5+0.125+0.0625


我见过模块
Decimal
,它有
quantize
方法,几乎满足了我的要求,但它是十进制的,而不是二进制的。

是的,有一个python模块用于此,fxpmath。有关更多信息,请访问:

这里有一个例子:

从fxpmath导入Fxp
x=Fxp(0.68751,真,8,3)#(val,有符号,n_字,n_分数)
打印(x)
打印('precision={}\n'。格式(x.precision))
y=Fxp(0.68751,真,8,4)#(val,有符号,n_字,n_分数)
打印(y)
打印('precision={}\n'。格式(y.precision))
打印(x+y)
结果:

0.625
precision = 0.125

0.6875
precision = 0.0625

1.3125

如果我误解了,请纠正我,但我认为在你的
0.6875原因0.5+0.125+0.0625
示例中,
准确度应该是4,因为
0.0625=2**-4

无论如何,您可以使用定点库创建基于浮点数的定点数

>>> from numfi import numfi    
>>> x = numfi(0.68751,1,6,4) 
>>> x
numfi([0.6875]) s6/4-r/s
如果不需要定点运算,也可以使用此简单函数

np.round(num*(2**f))*2**-f#f是分数长度
np.round
可替换为
np.floor
/
np.ceil
/
astype(int)