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

By Long Luo

(挖坑!)

A4 纸背后的科学

A系列纸张尺寸的长短比(宽高比)都是 \(1: {\sqrt {2}}\) ,然后舍去到最接近的毫米值。A0

泥板上的神秘数字

第一次数学危机

古巴比伦法求根号 2

牛顿迭代法

总结

参考文献

0%