gpt4 book ai didi

c# - Double.Epsilon 表示相等、大于、小于、小于或等于、大于或等于

转载 作者:IT王子 更新时间:2023-10-29 03:48:41 29 4
gpt4 key购买 nike

http://msdn.microsoft.com/en-us/library/system.double.epsilon.aspx

If you create a custom algorithm that determines whether two floating-point numbers can be considered equal, you must use a value that is greater than the Epsilon constant to establish the acceptable absolute margin of difference for the two values to be considered equal. (Typically, that margin of difference is many times greater than Epsilon.)

那么这真的不是可以用于比较的 epsilon 吗?我不太明白 MSDN 的措辞。

它可以用作此处示例中的 epsilon 吗? - What is the most effective way for float and double comparison?

最后这看起来真的很重要,所以我想确保我有一个可靠的相等性实现,大于、小于、小于或等于以及大于或等于。

最佳答案

我不知道他们在写这篇文章时抽的是什么。 Double.Epsilon 是不为 0 的最小可表示非正规浮点值。您所知道的是,如果出现截断错误,它总是更大比这个值。大得多。

System.Double 类型可以表示精确到最多 15 位的值。因此,如果 double 值 x 等于某个常量,则简单的一阶估计是使用常量 * 1E-15

的 epsilon
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;
}

不过您必须小心,截断错误可能会累积。如果 xy 都是计算值,那么您必须增加 epsilon。

关于c# - Double.Epsilon 表示相等、大于、小于、小于或等于、大于或等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2411392/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com