为什么大部分小数在计算机中是不精确的

本文揭示了计算机存储小数时遇到的精度问题,由于二进制无法精确表示所有十进制小数,导致非2的幂次小数在转换过程中出现近似值。通过实例说明了这种现象,并解释了原因。

为什么大部分小数在计算机中是不精确的

现实生活中小数是以十进制进行存储的,而在计算机中是采用二进制存储的;

因此在将小数存入计算机中时,从十进制转为二进制

第一步,将 整数部分除 2 取余 ,直到商为 0 为止,然后依次 将所得余数逆向排列 ,得到整数部分的二进制结果

第二步,将 小数部分乘 2 取整,直到小数部分为 0 为止,然后依次 将所得整数顺向排列 ,得到小数部分的二进制结果

但是,在转换过程中二进制只能精准表示2的某次方之和

其它数值只能表示出近似值

2的N次方对应十进制数
24
12
01
-10.5
-20.25
-30.125

当我们从计算机中取出存放的小数值时,有些数值便不能精确显示,

示例:

//当结果是2的某次方之和时能精确表示
System.out.println((float)0.5*0.5); //0.25
//当结果不是2的某次方之和时不能精确表示
System.out.println((float)0.2*0.2);	//0.04000000059604645(原值应为0.4)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值