python中如何正确进行浮点数的大小比较

请不要轻易直接比较浮点数的大小,因为这可能会出现非预期的结果。

引子

先来看个例子:

如果运行下面这段代码,您觉得会输出什么呢?

if (0.1 + 0.2) < 0.3:
    print('小于')

if (0.1 + 0.2) == 0.3:
    print('等于')

if (0.1 + 0.2) > 0.3:
    print('大于')

实际结果是输出:大于!

怎么样?和您想象得不一样吧?

我们再来看看下面这段代码:

print(0.1 + 0.2)

实际输出:0.30000000000000004

为什么不是我们想象的0.3呢?

浮点数的组成

在计算机中,一个浮点数是由符号位、指数位和尾数位三部分组成的,其中:

符号位:表示数字的正负。0代表正数,1代表负数。

指数位:表示数字的范围,即大小。在32位单精度浮点数中,指数占用8位;在64位双精度浮点数中,指数占用11位。

尾数位:表示数字的精确度,即精度。它是一个小数部分,通常是以1.xxxx的形式表示,其中1通常是隐含的(不实际存储,但在计算时假定存在)。在32位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

miniQMT量化交易

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值