浮点数表示数误差产生的直接原因有两个,一个原因是两个浮点数a和b都在某种浮点数表示方式的浮点数集内,而a与b的运算(如+、-、×、÷等)结果却可能不在这个浮点数集内(不是溢出),因此必须用这个浮点集内与它最接近的某个浮点数来表示(称为舍入)。另一个原因是在将数据从10进制转化为2进制、4进制或16进制时可能产生误差。
  在一般情况下,随着尾数基值rm的增大,规格化后的2进制尾数中的前置"0"的个数也就越多。只有在尾数基值rm=2时,才能保证在规格化后的尾数中不出现前置"0",从而获得最高的精度。
  规格化浮点数的精度主要与尾数基值rm和尾数长度p有关。在一般情况下,认为规格化尾数最后1位的可信度只有一半,因为这一位通常是由舍入得到的,因此,规格化浮点数的精度可以表示如下:
            (2.2)
  当rm=2时,有:
         (2.3)
  当rm>2时,为了便于与2进制进行比较,我们用p2表示2进制的尾数字长,于是有如下关系:
         
代入(2.2)式,有:
          (2.4)
  把(2.4)与(2.3)进行比较,可以得出结论:当浮点数的尾数长度(指2进制位数)相同时,尾数基值rm取2具有最高的表示数的精度。当尾数基值rm>2时,浮点数的表示数的精度与rm=2相比将损失倍,即相当于尾数减少了()个2进制位。
  实际上,得出上述结论是很显然的,因为,当尾数基值rm=2时,规格化浮点数的尾数肯定没有前置0,全部尾数长度都是有效位。而当尾数基值rm>2时,规格化浮点数的尾数最多可能有()个前置0,所以,浮点数的表示数的精度与rm=2相比将损失倍。例如,当尾数基值rm=16时,规格化浮点数的尾数可能有3个前置0,因此,这种浮点数的表示数的精度与rm=2时相比将损失23倍,即相当于尾数减少了3个2进制位。