我在划分
时遇到了问题my max_sum = 14
total_no=4
所以当我做的时候
print "x :", (total_sum/total_no)
,我得到3而不是3.5
我尝试了许多打印方式,但失败了,有人可以让我知道我以3.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.0
或total_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_sum
或total
转换为浮动。
答案 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