gpt4 book ai didi

python - 测试两个 float 是否在 1 ULP 之内

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:12 26 4
gpt4 key购买 nike

如何判断两个 float 之差是否最多为1 ULP?

类似于下面的代码,它(忽略符号和指数,并且)提取尾数的二进制,但稍微不那么糟糕:

a = int(<float>.hex().lstrip('-').lstrip('0x')[1:].lstrip('.')[:-3].rstrip('+').rstrip('p'), 16)
b = int(<float>.hex().lstrip('-').lstrip('0x')[1:].lstrip('.')[:-3].rstrip('+').rstrip('p'), 16)
print abs(a - b) <= 1

最佳答案

使用 NumPy,您可以获得给定数字之后的下一个 float :

# Test whether taking the smallest possible step from b in the direction of a gets you a.
# Special case: If b == a, then np.nextafter(b, a) == a
a == np.nextafter(b, a)

(如果两个数字具有不同的 ULP,或者其中一个数字是无穷大,这可能不是您想要的。)

关于python - 测试两个 float 是否在 1 ULP 之内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42030004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com