有人可以在C#中指向(或显示)一些好的通用浮点比较函数来比较浮点值吗?我想实现的功能IsEqual,IsGreater一个IsLess.我也只关心双打不漂浮.
http://msdn.microsoft.com/en-us/library/system.double.epsilon.aspx
如果创建一个自定义算法来确定是否可以将两个浮点数视为相等,则必须使用大于Epsilon常量的值来确定两个值相等的可接受的绝对差值.(通常,差异幅度比Epsilon大很多倍.)
那么这不是真正可以用于比较的ε吗?我真的不明白MSDN的措辞.
它可以在这里的示例中用作epsilon吗?- 浮动和双重比较最有效的方法是什么?
最后这看起来非常重要,所以我想确保我有一个可靠的实现平等,大于,小于,小于或等于,大于或等于.
有没有用于进行双重比较的java库?例如
public static boolean greaterThanOrEqual(double a, double b, double epsilon){
return a - b > -epsilon;
}
Run Code Online (Sandbox Code Playgroud)
我开始的每个项目我最终都会重新实现这个并复制粘贴代码和测试.
NB为什么更好地使用第三方JAR的一个很好的例子是IBM推荐以下内容:
"如果您不知道基础测量的规模,使用测试"abs(a/b - 1)<epsilon"可能比仅仅比较差异更加稳健"
我怀疑很多人会想到这一点,并说明即使是简单的代码也可能是次优的.