惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
IT之家
IT之家
博客园_首页
博客园 - 【当耐特】
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
GbyAI
GbyAI
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
H
Help Net Security
T
Tailwind CSS Blog
B
Blog RSS Feed
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
博客园 - 叶小钗
雷峰网
雷峰网
量子位

Long Luo's Life Notes

夏至日测地球:利用太阳影子计算地球半径 2009年江西高考数学压轴题:陶平生老师又藏了什么数学机关? 《茶杯里的风暴》读书笔记:从日常生活中的小事,看懂背后的物理学 2008年江西高考数学压轴题详解:为什么它被称为史上最难高考数学题? 太阳温度是怎么计算出来的? 《大象的时间,老鼠的时间》读书笔记:生命节奏背后的数学规律 小港流到哪里去? 如何用一根棍子测出地球有多大?复刻埃拉托色尼的春分实验 2007江苏高考数学第20题解析:一道通向黄金分割数的数列压轴题 Google经典面试题: 鸡蛋应该怎么扔? 2010年江苏高考数学压轴题解析:巧用余弦定理与数学归纳法 2011年清华大学自主招生数学题解析:一道经典数列题的解法与思路 2011年清华大学自主招生数学题解析:一道经典数列题的解法与思路 2006年江西高考理科数学压轴题解析:递推、放缩与不等式结构 2006年江西高考理科数学压轴题解析:递推、放缩与不等式结构 一道初中数学极值题的多种解法:柯西不等式、几何法、函数法详解 扔几个骰子,怎么算出期望?——拼多多校招笔试算法题的数学故事 拼多多校招笔试算法题:一行公式搞定“多多的魔术盒子” 斯特林公式(Stirling's Formula):我一个阶乘表达式,怎么就和圆扯上关系了呢? 我爱做题:2010年江西高考理科数学压轴题 热机的效率上限在哪里?解析卡诺循环(Carnot Cycle) 为什么 2024 年会有 366 天? 数学之美:几何视角下的高斯积分(Gaussian Integral) 从最小二乘法到正态分布:高斯是如何找到失踪的谷神星的? 正态分布(Normal Distribution)公式为什么长这样? 高速公路编号背后的数学密码 2024阿里巴巴全球数学竞赛预选赛试题及解答 库函数 (libm) 是如何计算三角函数值的? payne hanek 归约算法 音乐背后的数学
浮点数
Long Luo · 2023-12-03 · via Long Luo's Life Notes

By Long Luo

挖坑

假如你知道浮点数的话,你就知道为什么了!

按照 IEEE 754 浮点数标准 制定的 浮点数运算法则, float 类型的单精度浮点数 的尾数部分有 \(\large {23}\) 位二进制数,如下图所示:

IEEE 754 Single Floating Point Format

在十进制下,大致相当于 \(\large {\log_{10}{2^{23}} = 23 \cdot \log {2} \approx 23 \times 0.301 \approx 6.9}\) ,有效数字大约有 \(\large {7}\) 位。

所以当 \(\large {x = 1000001}\) 时,我们应该使用 double 类型的双精度浮点数 [^12] ,这样才能保证结果有足够的精度

双精度浮点数的尾数部分有 \(\large {52}\) 位,如下图所示:

IEEE 754 Double Floating Point Format

在十进制中大致相当于 \(\large {\log_{10}{2^{52}} = 52 \cdot \log {2} \approx 52 \times 0.301 \approx 15.6}\) ,也就是说当 \(\large {x}\) 有效数字是 \(\large {[7, 15]}\) 时,我们应该使用 double 类型的双精度浮点数可以保证精度!

但这仍然有个问题,那就是 \(\large {x}\) 有效数字 超过 \(\large {15}\) 位,应该怎么办?

参考文献

  1. IEEE 754
  2. Floating-point arithmetic
  3. Single-precision floating-point format
  4. Double-precision floating-point format