假设我有两个浮点数,即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和下一个最小浮点数之间的差值。)
@ShreevatsaR,这就是为什么我除以'x'(不仅是'eps')。 (y-x)/ x/eps =(y-x)/(x * eps)'。我仍然不确定它是否正确。 – Szabolcs 2011-05-31 14:33:17
啊,好吧,对不起。你的公式可能是对的;让我们想想。 :-)与此同时,您可以阅读[每位计算机科学家应该了解的浮点算术知识](http://cr.yp.to/2005-590/goldberg.pdf)。 – ShreevatsaR 2011-05-31 14:51:57