0
如何确定两个浮点数之间的差值是否至多为1 ULP?测试1个ULP中的两个浮点数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
它为什么会成为一个问题,如果“这两个n成员有不同的ULP“?并非常感谢你的答案,但我宁愿只使用Python stdlib,而不是NumPy ... –
@EcirHana:如果a和b在一个对方的ULP内,但不是一个b-ULP彼此,应该发生什么?这个检查给出了False。也许你不想那样。 – user2357112
我明白了。在这种情况下,我的问题是错误的,你的回答是正确的:)。 –