计算机原理-浮点数存储

本文探讨了计算机中浮点数精度丢失的原因,从二进制小数到IEEE浮点标准,解析了浮点数在计算机内的存储方式,并提出避免精度丢失的策略,如使用整数替代和高精度类。
摘要由CSDN通过智能技术生成

1、精度丢失

作为程序员大家应该都遇到过下面这种情况,用浮点数做运算,发现结果与预期有偏差,比如下面的JAVA代码

public static void main( String[] args )
    {
         int i = 3;
         float j = 0.9f;
         System.out.println("3乘以0.9的结果是:" + i*j);
    }

用一个整数3乘以浮点数0.9,期望结果是2.7,实际结果却是

20180227004

与2.7相差0.0000002,这道连小学生都不会算错的题目,为什么计算机会算错?真正的原因要从计算机保存浮点数的底层原理说起。

2、计算机如何保存浮点数

2.1、二进制小数

在计算机中数字使用二进制方式存储,所以理解浮点数的第一步是理解如何用二进制表示小数。

首先,对于我们比较了解的十进制,可以使用下面的公式表示:

dmdm-1···d1d0.d-1d-2···d-n

d的取值范围是0-9的任意数字。
m则从左向右依次递减,在小数点左边m=0,小数点右边m=-1。

在小数点左边的数字,取10的m次正幂,得到整数。小数点右边则取10的m次负幂,得到小数。例如12.34 表示数字

1×101+2×100+3×101+4×102=12
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值