为什么这个简单的计算返回0
>>> 25/100*50
0
虽然这实际上是正确计算的?
>>> .25*50
12.5
>>> 10/2*2
10
第一个例子出了什么问题?
答案 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.0
或25.0 / 100
或25.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。