这让我很生气......多年来我一直在使用python,这才刚刚开始呈现。到目前为止,我是如何设法躲避我的。
如果你打开一个python空闲并试试这个等式......
4/32*100
你会得到'0'作为答案。现在尝试使用浮点数相同的等式....
4.0/32.0*100.0 (or just the first number 4.0/32*100)
您现在获得实际百分比。
WTF!?
这是某种python错误!?即使是计算也可以做出公式并吐出一个百分比。
那么为什么python不能将4视为4.0。更好的问题......如果解释器没有看到4(4.0),实际看到的是什么?
有人请清楚这一点,以便我再次对python感到专业(笑)。
答案 0 :(得分:2)
在Python 2中,int
类型除法忽略除法的十进制值。
例如,1/2 = 0.5,但在int
类型除法中,1/2将评估为0,因为它忽略了小数值。
因此,在您使用4/32*100
的情况下,4/32
将首先评估为0,然后0*100
将最终等于0.
另一方面,在float
类型划分中,它将按照我们的预期评估答案(但不是在严格精确的定义中,请查看here以获取更多信息)。
答案 1 :(得分:0)
对于Python 2.x,划分两个整数或长整数使用整数除法,也称为“底层划分”(在划分后应用底层函数)
对于Python 3.x,“/”对所有类型都进行“真正划分”。
为了使python执行真正的除法,将分子的任何分母投射为浮点数。
float(4)/32*100
或
4/float(32)*100
或者在下面做以使python 2除法表现得像python 3 division
from __future__ import division
4/32*100