【发布时间】:2021-08-20 14:19:14
【问题描述】:
我正在使用fxpmath 库,但基本算术似乎不起作用。是值被破坏了还是我使用了不应该计算的权力?
from fxpmath import Fxp
def test_pure_q96():
x = Fxp(1.0001, dtype="Q64.96") ** (Fxp(4055, dtype="Q64.96") / 2)
print(x)
print(x/2)
输出是:
1.2247538232335937
2.036149027162537e-13
第一个值似乎正确,第二个应该只有第一个的一半?
【问题讨论】:
-
打印出
x.info(verbose=3)可能会提供有用的信息,以准确了解该结果是如何表示的。我不确定Q64.96是一个可用的 dtype,因为它要求底层存储是 128 位 int,而 numpy 似乎不支持。 -
还有其他可用的 Qx.96 类型吗?可能是一个更大的整数?
-
我认为您会将总位数限制为 64 - 所以
Q2.62将是您可以针对此特定值获得的最精确的值。 (您无法使用该 dtype 表示 4055 常量,但您不需要。) -
超级有用,看来我需要为 Q64.96 找到另一个库,因为我需要模拟这种确切的行为!
标签: python fixed-point