56

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

>>> 25/100*50  
0

虽然这实际上计算正确?

>>> .25*50
12.5

>>> 10/2*2  
10

第一个例子有什么问题?

4

6 回答 6

93

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

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

另一种选择是将至少一个操作数设为浮点数,例如25.0/100.

在 Python 3 中,25/100总是0.25.

于 2012-05-26T18:25:49.410 回答
19

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

25 / 1000

但是,只要除法中的至少一个操作数是浮点数,您就会得到浮点数结果:

 25 / 100.025.0 / 100  或25.0 / 100.0全部给0.25

于 2012-05-26T18:26:17.557 回答
1

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

于 2012-05-26T18:26:02.763 回答
1

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

(25 * 1.0) / 100 * 50

所以,(1.0) 确保分子是浮点型

于 2020-09-02T00:39:17.900 回答
0

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

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

float(25)/100*50
于 2020-10-15T21:00:39.060 回答
-3
  • 在 Python 2 中:默认情况下 25/100 是整数除法

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

于 2019-01-03T14:23:09.220 回答