假设我有两个浮点数x
和y
,它们的值非常接近。
在计算机上可以表示离散数量的浮点数,因此我们可以按升序枚举它们:f_1, f_2, f_3, ...
. 我希望在此列表中找到 和 的距离x
(y
即它们是 1、2、3,... 还是n
离散的步长?)
+-*/
是否可以仅使用算术运算( )而不查看二进制表示来做到这一点?我主要对它在 x86 上的工作方式感兴趣。
下面的近似值是否正确,假设那个y > x
和那个x
和y
只有几个步骤(比如,< 100)相隔?(可能不是 ...)
(y-x) / x / eps
这里eps
表示机器 epsilon。(机器 epsilon 是 1.0 和下一个最小浮点数之间的差。)