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

   日期:2020-10-09     浏览:104    评论:0    
核心提示:首先先说下计算机内存里的存储:内存中最小的单位 位/比特(bit) 二进制数序列中的一个0或一个1就是一个比特,在电脑中,一个比特对应着一个晶体管。二进制即常说的0和1两个数码来表示的数基数为2,进位规则是 “逢二进一”十进制数则用0、1、2、3.........9 , 这十个数来表示。十进制(计du数法)是以10为基础数字系统,进位规则是 “满十进一”Java中基本数据类型:四类八种: double float属于浮点数据类型 然而在实际的开发中会发现...

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

内存中最小的单位 位/比特(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位)有效数字。那有效数字以后的位就被忽略了。

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

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服