双数据类型的最小步骤是什么? (。净)

时间:2013-03-18 14:05:40

标签: .net numbers double

我的问题有点理论化但实际上我在实践中需要它。

假设我们有两个变量 X Y Y 肯定是 X 的下一个双倍数字(因为您已经知道我们无法在 double中保留任何实数因为即使在0到1的间隔内,实数也是无限的。)

(Y - X)是否恒定?如果是,它的价值是什么?

P.S。我的问题与Microsoft.NET Framework有关。

2 个答案:

答案 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#

的实现

http://www.boost.org/doc/libs/1_39_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/next_float/nextafter.html

编辑:

在C#中的实现见这里

next higher/lower IEEE double precision number