浮点数与整数的数学和行为

时间:2017-11-13 00:33:14

标签: python math numbers

这让我很生气......多年来我一直在使用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感到专业(笑)。

2 个答案:

答案 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