为什么这个简单的计算返回 0
>>> 25/100*50
0
虽然这实际上计算正确?
>>> .25*50
12.5
>>> 10/2*2
10
第一个例子有什么问题?
在 Python 2 中,25/100
执行整数除法时为零。因为结果小于1
。
from __future__ import division
您可以通过添加到您的脚本来“修复”这个问题。/
这将在使用运算符并//
用于整数除法时始终执行浮点除法。
另一种选择是将至少一个操作数设为浮点数,例如25.0/100
.
在 Python 3 中,25/100
总是0.25
.
这是整数截断的问题(即,数字的任何小数部分都被丢弃)。所以:
25 / 100
给0
但是,只要除法中的至少一个操作数是浮点数,您就会得到浮点数结果:
25 / 100.0
或25.0 / 100
或25.0 / 100.0
全部给0.25
25/100
是一个整数计算,它(通过截断)四舍五入到0
.
我只是通过这个技巧解决了这个问题。
(25 * 1.0) / 100 * 50
所以,(1.0) 确保分子是浮点型
如果结果小于 1,Python 2 将返回零进行整数除法。
解决方案是将整数之一转换为浮点数,例如
float(25)/100*50
在 Python 2 中:默认情况下 25/100 是整数除法
在 Python 3 中:25/100 始终为 0.25。