http://msdn.microsoft.com/en- us/library/system.double.epsilon.aspx
如果您创建一个确定两个浮点数是否可以视为相等的自定义算法,则必须使用大于Epsilon常数的值来建立两个值被视为相等的可接受的绝对绝对差值。(通常,差异的幅度是Epsilon的许多倍。)
因此,这不是可用于比较的epsilon吗?我不太了解MSDN的用语。
可以在此处的示例中用作epsilon吗?- 进行浮动和双重比较的最有效方法是什么?
最后,这似乎真的很重要,因此我想确保我有一个可靠的平等实现,大于,小于,小于或等于以及大于或等于。
我不知道 什么 时候他们写道,他们吸烟。 Double.Epsilon是最小的可表示的非标准浮点值,不为0。您所知道的是,如果存在截断错误,它将始终 大 于此值。更大。
Double.Epsilon
该System.Double类型可以表示精确到15位数字的值。因此,如果双精度值x等于某个常数,则简单的一阶估计是使用常数* 1E-15的ε
System.Double
x
public static bool AboutEqual(double x, double y) { double epsilon = Math.Max(Math.Abs(x), Math.Abs(y)) * 1E-15; return Math.Abs(x - y) <= epsilon; }
但是,您必须要小心,截断错误可能会累积。如果x和y是计算值,则必须增加epsilon。
y