1.5 浮点运算(Floating Point Arithmetic)

-3.1416 的科学计数法表示为:

  • 基(base)
  • 分数(fraction)
  • 指数(exponent)
  • 符号(sign)

计算机用类似的方式来表示数字, 称为浮点数(floating point), 如:

编程练习: 利用 Python 编写一个程序把二进制的浮点数字符串转化为十进制的数, 二进制字符串的格式如下 .10101*2^3

如果尾数的第一位数是非零的数,则称对应的浮点数为规约(normalized)的, 如

  • 规约确保每个浮点数都用一个唯一的二进制串来表示。
  • 规约形式的浮点数第一位永远为 1, 实际上可以不存储,尾数多了一位来更精确地表示数。
  • 基是浮点数最重要的参数。
  • 分数的位数决定了浮点数的表示精度
  • 指数决定了浮点数能表示的最大最小值范围。
  • 不同的浮点数还表现在其它方面,如
    • 如何处理舍入
    • 如何处理 underflow 和 overflow
    • 是否允许
    • NaN (Not a Number)

浮点数的表示误差

浮点数 有 5 个 10 进制数字表示,故所有小于 的信息可能被丢失这意味着若 是一个实数,其最佳的 5 位数字近似数 是 , 则在 中的 相对表示误差是 :

在一个 位数字和基为 的浮点运算中的最大相对表示误差

它是 1 和下一个最大的浮点数 之间距离的一半。

以 10 进制有 5 位尾数的浮点数为例,区间 之间的数的浮点数 表示都为

其最大的表示误差为

IEEE 浮点数标准

IEEE Single precision

  • 符号 : 1 位
  • 指数 : 8 位
  • 分数 : 23 位

其表示的数为

  • 最大相对表示误差
  • 下界为 (, underflow threshold)。
  • 上界为 (, overflow threshhold)。

IEEE Double precision

  • 符号 : 1 位
  • 指数 : 11 位
  • 分数 : 52 位

其表示的数为

  • 最大相对表示误差
  • 下界为 (, underflow threshold)。
  • 上界为 (, overflow threshhold)。

舍入误差 (Roundoff Error)

当计算 时( 可以是加、减、乘、除四种运算中的任意一种), 其结果不能精确地表示成一个浮点数,则它被放到内存或寄存器之前,必须用一个邻近的浮 点数来近似表示。 用 表示这个近似, 则称

舍入误差

是一个最接近于 的浮点数,则称运算进行了正确地 舍入。 当正确地舍入时,且 没有溢出,则记

其中 $\abs\delta$ 以 $\varepsilon$ 为界, 称 $\varepsilon$ 为机器精度 (machine epsilon, machine precision, or macheps)。

  • IEEE 标准的浮点运算也保证

results matching ""

    No results matching ""