1

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

假设我们有两个变量XYY肯定是X的下一个双倍数(正如您已经知道的,我们不能将任何实数保留为精度数,因为实数即使在 0 到 1 的区间内也是无限的)。

(Y - X)是常数吗?如果是,它的价值是什么?

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

4

2 回答 2

4

.NET 中两个双精度值之间的最小差异是Double.Epsilon

至于比较双精度值,请参阅此 SO 问题的答案以获取有用信息(正如公认的答案所说,应尽可能使用小数而不是双精度)。

于 2013-03-18T14:11:08.663 回答
4

据我所知,没有框架方法可以从给定间隔内的给定值中找到下一个可表示的双精度或浮点值。值的下一个可表示数字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# 中的实现见这里

下一个更高/更低的 IEEE 双精度数

于 2013-03-18T14:17:23.387 回答