我的问题有点理论化但实际上我在实践中需要它。
假设我们有两个双变量 X 和 Y 。 Y 肯定是 X 的下一个双倍数字(因为您已经知道我们无法在 double中保留任何实数因为即使在0到1的间隔内,实数也是无限的。)
(Y - X)是否恒定?如果是,它的价值是什么?
P.S。我的问题与Microsoft.NET Framework有关。
答案 0 :(得分:4)
.NET中两个double值之间的最小差异是Double.Epsilon。
至于比较双值,请参阅this SO question的答案以获取有用的信息(正如接受的答案所说,Decimal应尽可能使用{{3}}。
答案 1 :(得分:4)
据我所知,没有框架方法可以在给定的时间间隔内找到给定值的下一个可表示的double或float值。值d
中的下一个可表示数字不是d + Double.Epsilon
。对于较大的双值,连续双精度之间的距离较大。 Double.Epsilon
是可表示的双精度数之间的最小距离,只有接近零的值才会出现距离。
在C或C ++库中,通常有这样的功能,例如:这里是C ++的Boost库。 我会看看我是否可以找到C#
的实现编辑:
在C#中的实现见这里