蟒蛇圆问题

时间:2010-09-01 20:02:53

标签: python rounding division python-2.x integer-division

我在划分

时遇到了问题
my max_sum = 14
total_no=4  

所以当我做的时候

print "x :", (total_sum/total_no)

,我得到3而不是3.5

我尝试了许多打印方式,但失败了,有人可以让我知道我以3.5格式获取的方式吗?

谢谢

5 个答案:

答案 0 :(得分:9)

在Python 2.x中,默认情况下将两个整数划分为另一个整数。这通常令人困惑,并已在Python 3.x中修复。您可以通过将其中一个数字转换为浮点数来绕过它,它会自动转换另一个数字:

float( 14 ) / 4 == 3.5

相关的PEP是number 238

  

当前的部门(/)运营商有   暧昧的含义       数值参数:它返回数学的底限       如果参数是int或long,则除法的结果,但它       如果是,则返回除法结果的合理近似值       参数是浮点数或复杂的。这使得表达期待       当整数不是时,浮点数或复数结果容易出错       预期但可能作为投入。

由于严重的向后兼容性问题,它在Python 2.x中没有改变,但是Python 3.x中的一个主要变化。您可以使用

行强制新分区
from __future__ import division

位于Python脚本的顶部。这是__future__-import - 它用于强制语法更改,否则可能会破坏您的脚本。还有许多其他__future__进口商品;它们通常是一个好主意,可用于准备迁移到Python 3.x.

请注意,//运算符始终表示整数除法;如果你真的想要这种行为,你应该优先使用它/。请记住,“明确比隐含更好”!

答案 1 :(得分:2)

你正在划分两个整数,结果也是一个整数,在python 2中。尝试使你的一个操作数浮动,如max_sum = 14.0total_no = 4.0来获得浮点结果。

如果你想让python 2.X表现得更直观一些,你可以添加

from __future__ import division

位于脚本顶部。在python 3中,除法在您的情况下按预期运行。

答案 2 :(得分:1)

make max_sum = 14.0或total_no = 4.0

答案 3 :(得分:0)

您正在进行整数运算,因此您得到最接近的整数结果:3。

您应该明确/隐式地将max_sumtotal转换为浮动。

答案 4 :(得分:0)

另一种方法是从Python 3导入分区:

>>> from __future__ import division
>>> max_sum = 14
>>> total_no = 4
>>> print max_sum / total_no  # the way you want it
3.5
>>> print max_sum // total_no
3