Double.Epsilon价值

时间:2013-08-21 11:58:23

标签: c#

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

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

4 个答案:

答案 0 :(得分:6)

这是它的声明:

[__DynamicallyInvokable]
public const double Epsilon = 4.94065645841247E-324;

答案 1 :(得分:2)

不,这当然不正确。

首先:通过小程序或阅读documentation可以轻松找到Double.Epsilon的值:

4.94065645841247E-324

第二:不要将此值与Machine Epsilon混淆,this question通常用于两个double值之间的比较。有关“Machine Epsilon”的详细信息,请参阅{{3}}。

答案 2 :(得分:1)

MSDN page

  

此常量的值为4.94065645841247e-324。

答案 3 :(得分:1)

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

说明:用IEEE表示法写的最小正值是

0.0000000000000000000000000000000000000000000000000001B x 2 ^ -1022。

(B代表二进制基数)

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

另请注意,这是一个非正规化的"浮点值,因为指数是-1022。

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

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