python-3.x - 浮点算术 - 指数的位
问题描述
我有一个关于浮点运算的一般性问题。
最近,我对了解程序中的计算产生了浓厚的兴趣,于是开始解题。我想让你解释一下让我特别困惑的一个:
计算机器 epsilon(不仅作为十进制值,而且作为 二进制指数的位数)。机器 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 取决于尾数的位数,因为它们决定了浮点数的精度?
解决方案
你写的文字写得不好。目前尚不清楚将数字“作为二进制指数的位数”来计算意味着什么。例如,如果二进制指数的位数是 11,那么将一个数计算为 11 意味着什么?如果有人说“计算 7 乘以 13 为 11”,那将毫无意义。
所谓的机器 epsilon,即 1 和下一个更大的可表示数字之间的差异,仅取决于有效数字可用的位数(基数为 2 的位)。1
2 −52是 IEEE-754 基本 64 位二进制浮点的机器 epsilon。由于它有一个 53 位的有效位(52 位显式编码,一个通过指数字段编码),当高位表示 2 0时,对于 1 和 2 之间的数字,有效位的低位表示 2 -52 .
脚注
1 “有效位”是浮点数小数部分的首选术语。尾数是对数的小数部分。
推荐阅读
- spring-boot - 使用服务器配置为 Spring Boot 对传入的 Gzip 压缩请求进行 Gzip 解压
- python - RStuido 中的 Python 冲突
- r - 在 R 中使用 dplyr 计算子组内的“完成百分比”?
- python - 是否有任何内置的 pandas 操作可以找到两个不同数据帧的相似列?
- node.js - 在nodejs中使用xero api获取报告时面临问题
- python-3.x - 使用 Spacy 使用 PySpark 和 Jupyter 解析文本时出错
- ios - Crashlytics 是否遇到 assertionFailure 崩溃?
- oracle - Oracle 身份列循环
- c - 使用 GLFW 禁用垂直同步?
- angular - 如何使用 ionic 4 Angular 将注册详细信息(文本和图像)保存到 Firebase?