为什么浮点数不能直接比较大小

以JS为例
在这里插入图片描述
在这里插入图片描述
简短的解释就是,浮点数在计算机中大部分都是近似
0.1 可以表示为
0.000110011001100110011001100110011001100110011001100110…
其后是一个无限循环的小数,计算机只能截断,很显然截断后的数就已经是0.1的近似值了,但是两个0.1的在计算机的表示是一致的,所以0.1==0.1是成立的
在这里插入图片描述
而经过计算后的浮点数,是两个近似值计算得到值,计算机不能把他识别为是1位小数0.3而是0.3000…4,与真计算值的表示方式很可能是不相同的,所以他们不等。

再来解释为什么0.1+0.5==0.6是true

因为0.5在计算机是可以准确表示为0.1000000000的,那么一个被截断的数和他相加后得到的虽然也是一个近似值,但是0.1小数第一位后面的0和1,在0.1+0.5计算中是没有变过的,他们的表示方式和0.6小数第一位后面的0和1是相同的

所以即使这是一个0.6的近似数,比较结果是true

我还有一个疑问是,计算机如何把0.0001100110011001…输出的时候转换为0.1?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值