You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python 2中浮点数运算异常:整数除法结果为0的问题求助

解决Python 2中整数除法得到0的问题

嘿,这个问题我太熟悉了——Python 2的整数除法特性确实坑过不少有经验的开发者!

问题根源

在Python 2中,当你用/运算符对两个整数进行除法运算时,它执行的是地板除法(也就是只保留商的整数部分,直接舍去小数)。比如你这里correct是133-136,total是199(或是你代码里打印的139),两者的商都是小于1的小数,整数除法后就直接得到0。而你尝试的float(correct/total)之所以没用,是因为它先执行了整数除法得到0,再把0转成float,结果自然还是0.0,顺序完全错了。

两种解决方案

1. 提前将其中一个操作数转为浮点数

只需要把correcttotal中的任意一个先转成float,这样整个除法运算就会触发浮点除法,得到正确的小数结果:

print(correct) # 输出133-136
print(total) # 输出199(或139)
print("Accuracy: ", float(correct)/total) 
# 或者写成 correct/float(total),效果完全一致

2. 导入division模块,让Python 2使用Python 3的除法规则

如果你的代码里有很多除法运算,不想每次都手动转float,可以在代码的最开头添加这一行:

from __future__ import division

# 之后所有的/都会执行浮点除法,//才是地板除法
print("Accuracy: ", correct/total) # 直接得到正确的浮点数结果

这样就能得到你期望的0.66到0.97之间的准确率结果啦。

内容的提问来源于stack exchange,提问作者Asim

火山引擎 最新活动