为什么浮点数据表示有误差?

    科技2025-01-06  13

    首先先说下计算机内存里的存储:

    内存中最小的单位 位/比特(bit)  二进制数序列中的一个0或一个1就是一个比特,在电脑中,一个比特对应着一个晶体管。

    二进制即常说的0和1两个数码来表示的数 基数为2,进位规则是  “逢二进一”

    十进制数则用0、1、2、3.........9 , 这十个数来表示。十进制(计du数法)是以10为基础数字系统,进位规则是 “满十进一”

    Java中基本数据类型:四类八种:

                 

    double float属于浮点数据类型 然而在实际的开发中会发现有误差

    public class TestDemo { public static void main(String args[]){ double a=2.9; float f=2.4f; System.out.print("计算结果:"); System.out.println(a-f); } }

    计算的结果怎么和预想的不一样啊 (嗯。。。脑壳疼)

    从计算机的存储原理解释浮点数为何会产生误差:

     都知道计算机内部是以二进制进行存储的,因此十进制的有限位的小数在进来之后,会在计算机内部会显示是一个无限位的小数。

    Ps:十进制2.9转换为二进制10.1110011001100..................1100无限循环

          : 

       Ps:计算机保存浮点数的精度有限,例如float可以保留十进制最多7位(二进制23位)有效数字,

          double可以保留十进制15-16位(二进制52位)有效数字。那有效数字以后的位就被忽略了。

    所以现在清楚浮点数据存储是如何产生误差的了吧。

    Processed: 0.010, SQL: 8