【问题标题】:Floating-point arithmetic - bits of the exponent浮点算术 - 指数位
【发布时间】:2019-07-25 03:52:29
【问题描述】:

我有一个关于浮点运算的一般性问题。

最近,我对了解程序中的计算产生了浓厚的兴趣,因此我开始解题。我想让你解释一下让我特别困惑的一个:

计算机 epsilon(不仅作为十进制值,还作为 二进制指数的位数)。机器ε是取决于尾数的位数还是指数的位数?

这是我的微积分:

def exponent():
    expon = 0
    for number in range(1000):
         if 1.0+2.0**(-number)>1.0:
             expon = number
    return expon

print(exponent())
print(2**(exponent())) # Prints decimal value 

输出:

52
2.220446049250313e-16

正确吗?我对粗体文本的解释有疑问。我必须确定它是 8 位还是 11 位?我怎样才能做到这一点?是否正确的假设是,epsilon 取决于尾数的位数,因为它们决定了浮点数的精度?

【问题讨论】:

    标签: python-3.x floating-point epsilon


    【解决方案1】:

    你写的文字写得不好。目前尚不清楚将数字“作为二进制指数的位数”来计算意味着什么。例如,如果二进制指数的位数是 11,那么将一个数计算为 11 意味着什么?如果有人说“将 7 乘以 13 为 11”,那将毫无意义。

    所谓的机器 epsilon,即 1 和下一个更大的可表示数字之间的差值,仅取决于有效数字可用的位数(以 2 为底的位)。1

    2−52 是 IEEE-754 基本 64 位二进制浮点的机器 epsilon。由于它有一个 53 位有效位(52 位显式编码,一个通过指数字段编码),当高位表示 20 时,对于 1 和 2 之间的数字,低位有效数字的代表2-52

    脚注

    1 “有效位”是浮点数小数部分的首选术语。尾数是对数的小数部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      相关资源
      最近更新 更多