基础知识总结:小数计算为什么不精确?

类型float的的计算不精确的问题 

System.out.println(0.1f*0.1f);

得到0.0100001

不精确的原因:因为计算机是用二进制存储小数的,这个二进制不能精确表示0.1只能表示一个无限接近0.1的一个数,为什么0.1不能精却表示因为二进制使用2的多少次方

2^-1           0.5

2^-2           0.25

2^-3           0.125

2^-4           0.0625

所以进行计算的结果会出现不精确的情况,当误差足够小的时候就看上去是精确的,其实一般是不精确的

要保持精确用BigDecimal的类型,就是效率低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值