为什么Python返回0进行简单除法计算?

时间:2012-05-26 18:24:22

标签: python

为什么这个简单的计算返回0

>>> 25/100*50  
0

虽然这实际上是正确计算的?

>>> .25*50
12.5

>>> 10/2*2  
10

第一个例子出了什么问题?

6 个答案:

答案 0 :(得分:78)

在Python 2中,25/100在执行整数除法时为零。因为结果小于1

您可以通过在脚本中添加from __future__ import division来“修复”此问题。当使用/运算符并使用//进行整数除法时,这将始终执行浮点除法。

另一种选择是使至少一个操作数浮动,例如25.0/100

在Python 3中,25/100始终为0.25

答案 1 :(得分:16)

这是整数截断的问题(即,丢弃数字的任何小数部分)。所以:

25 / 100提供0

但是,只要分区中的操作数中至少有一个是浮点数,就会得到一个浮点结果:

25 / 100.025.0 / 10025.0 / 100.0都给予0.25

答案 2 :(得分:1)

25/100是一个整数计算,它将(通过截断)舍入到0

答案 3 :(得分:0)

我只是通过做这个技巧解决了这个问题。

(25 * 1.0)/ 100 * 50

因此(1.0)确保分子为浮点型

答案 4 :(得分:0)

如果结果小于1,Python 2将返回零以进行整数除法。

解决方案是将整数之一转换为浮点数,例如

float(25)/100*50

答案 5 :(得分:-3)

  • 在Python 2中:默认情况下25/100是整数除法

  • 在Python 3中:25/100始终为0.25。