Python不应该用浮点值作为字典的键

因为存在浮点误差,一些我们认为相等的值会不相等导致找不到。

当然这只是针对计算产生的浮点值,如果直接表示的浮点值就没有关系,因为即使有误差,浮点值和字典中键的误差也是一样的,例如0.3的实际值为0.30000001,那么外面的直接表示的0.3和字典里的0.3都是0.30000001,所以是可以找到的。

floatdict = {0.3: 'get'}
print(0.3 in floatdict)
print(0.1 + 0.2 in floatdict)
print(floatdict[0.3])
print(floatdict[0.1 + 0.2])

输出:

True
False
get
Traceback (most recent call last):
  File "test.py", line xx, in <module>
    print(floatdict[0.1+0.2])
KeyError: 0.30000000000000004
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值