0

我觉得这应该很容易在网上找到,但我很难。

有谁知道 c# 的价值是Double.Epsilon什么?我正在寻找确切的数值。

4

4 回答 4

7

这是它的声明:

[__DynamicallyInvokable]
public const double Epsilon = 4.94065645841247E-324;
于 2013-08-21T12:00:58.383 回答
3

不,这肯定是不正确的。

第一: 的值Double.Epsilon可以很容易地通过一个小程序或阅读文档找到:

4.94065645841247E-324

第二:不要将此值与Machine Epsilon混淆,后者通常用于两个双精度值之间的比较。有关“Machine Epsilon”的更多详细信息,请参阅此问题

于 2013-08-21T12:02:49.760 回答
2

MSDN 页面

该常数的值为 4.94065645841247e-324。

于 2013-08-21T12:03:11.653 回答
2

这些答案都不是确切的数值。确切的值是 2 的幂,即 2^-1074,因为这就是 IEEE 浮点数在现代计算机中的实际存储方式。给出的所有其他答案都是十进制近似值。如果将该十进制近似值分配给 a double,那么它将四舍五入为 2^-1074,因此在内部,寄存器或内存位置将接收真正的“Epsilon”值。因此,使用十进制常量将存储位置初始化为最小浮点值是可行的,但十进制常量仍然不是这个最小浮点值的实际值。

解释:用 IEEE 表示法写的最小正值是

0.000000000000000000000000000000000000000000000000000001B x 2^-1022。

(B代表二进制)

也就是将 1 移到二进制点右侧 52 位,然后再移 1022 位,总共 1074 位。前导符号位为零。符号位(1 位)加上系数(52 位)加上指数(11 位)给出 64 位的存储空间。

另请注意,这是一个“非规范化”浮点值,因为指数是 -1022。

请参阅https://en.wikipedia.org/wiki/IEEE_floating_point并搜索“1074”。

附言。我的计算器将 = 2^-1074 的值更精确地表示Double.Epsilon为 4.9406564584124654417656879286822e-324。

于 2015-09-08T02:29:52.650 回答