float 精度及有效位数导致的结果误差问题

1、范围

      float的位数为4byte,即32bit.

     其中1位为:符号位

             8位为:指数位

            23位为:尾数位

            于是,float的指数范围为-127~+128,数的范围为-2^128~2^128,即-3.40E+38~+3.40E+38

2、精度

      精度是由尾数来决定的

      float:2^23=8388608,一共七位,这意味着最多有7位有效数字,但绝对能保证的6

     

3、例如地球到月球的距离为384,425.32587公里

      根据float的精度,如果单位是米的话,假设应为384,425,325.97米

      但是实际中float保存格式为符号为为0(正数);;;指数位为8(00001000);;;;;尾数位为:3.84425

   显示的结果为3.84425e+008,故误差在千米范围


你可能感兴趣的:(float 精度及有效位数导致的结果误差问题)