C# 为什么单个ε值为1.401298E-45

C# 为什么单个ε值为1.401298E-45,c#,floating-point,C#,Floating Point,我不明白为什么单ε值是1.401298E-45而不是1E-126,如果内部的指数为-126,尾数为1。最小的正单值的指数为−126,基数为2,二进制有效位为.0000000000000000000000 1(2−23),因此其值为2−149,约为1.4•10−45.请记住,IEEE-754单精度浮点存储在基2表示中。这就是单精度的最小可能正非规范值的布局方式: 3 2 1 0 1 0987

我不明白为什么单ε值是1.401298E-45而不是1E-126,如果内部的指数为-126,尾数为1。

最小的正
值的指数为−126,基数为2,二进制有效位为.0000000000000000000000 1(2−23),因此其值为2−149,约为1.4•10−45.

请记住,IEEE-754单精度浮点存储在基2表示中。这就是单精度的最小可能正非规范值的布局方式:

                  3  2          1         0
                  1 09876543 21098765432109876543210
                  S ---E8--- ----------F23----------
          Binary: 0 00000000 00000000000000000000001
             Hex: 0000 0001
       Precision: SP
            Sign: Positive
        Exponent: -126 (Stored: 0, Bias: 126)
       Hex-float: +0x1p-149

换句话说,
126+23=149
,所以它的值是
2^-149
,大约是
1.4E-45

我忘了我们是在基数2!我估计未添加有效位的隐式前导位。