我在分割蟒蛇轮问题
my max_sum = 14
total_no=4
所以当我做
print "x :", (total_sum/total_no)
面临的问题,我得到3,而不是3.5
我试印刷方法很多,但失败了,有人能让我知道我以3.5格式获得什么方式吗?
谢谢
我在分割蟒蛇轮问题
my max_sum = 14
total_no=4
所以当我做
print "x :", (total_sum/total_no)
面临的问题,我得到3,而不是3.5
我试印刷方法很多,但失败了,有人能让我知道我以3.5格式获得什么方式吗?
谢谢
在Python 2.x中,将两个整数默认潜水你一个整数。这经常令人困惑,并已在Python 3.x中修复。您可以通过铸造号码之一为float绕过它,它会自动施放其他:
float(14)/4 == 3.5
相关PEP是number 238:
当前的除法(/)操作员 数值参数的含义不明确:如果参数是整数或长整数,它将返回数学的 结果的分层,但如果返回分隔结果的合理近似值,则返回的合理近似值参数是漂浮或复杂。这使得表达式期望 漂浮或复杂结果容易出错,当整数不是 预期但可能作为输入。
由于严重的向后兼容性问题,它在Python 2.x中没有更改,但是它是Python 3.x中的主要更改之一。你可以在你的Python脚本的顶部用
from __future__ import division
强制新分区。这是一个__future__
-import - 它用于强制语法更改,否则可能会破坏您的脚本。还有许多其他的__future__
进口;在准备迁移到Python 3.x时,它们通常是一个好主意。
请注意,//
运算符总是意味着整数除法;如果你真的想要这种行为,你应该优先使用它,/
。请记住,“明确优于隐含”!
这工作得很好,谢谢,但想法是直接返回结果 – daydreamer 2010-09-01 20:13:28
@learner:什么?我不明白你的评论。如果你想浮动除法,将其中一个参数转换为浮点数。 – katrielalex 2010-09-01 20:15:24
如果您不喜欢添加'.0'或'float(')的'cruft',那么'from __future__ import division'将会修复整个脚本或交互式会话(在其中逐个输入命令)。 – 2010-09-01 20:29:34
化妆max_sum = 14.0或total_no = 4.0
可能有助于解释@learner正在经历整数除法。 – jball 2010-09-01 20:06:59
-1先发帖子回答没有帮助。如果明确表示OP需要更多帮助,请不要张贴解决问题的单行报告。 – katrielalex 2010-09-01 20:11:38
你正在分割两个整数,结果也将是一个整数,在python 2.尝试让你的一个操作数浮动,如max_sum = 14.0
或total_no = 4.0
获得浮动结果。
如果你想蟒蛇2.X表现在这个问题上更直观一点,你可以在你的脚本的顶部添加
from __future__ import division
。在python 3中,分区按照您的预期工作。
这对我们有什么作用? – daydreamer 2010-09-01 20:12:37
你正在做一个整数运算,所以你得到最接近的整数结果:3。
您应该明确/隐含地投下max_sum
或total
以浮动。
这样做将在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
您正在使用哪个版本的Python? – jjnguy 2010-09-01 20:06:23
它是python 2.6.5 – daydreamer 2010-09-01 20:12:10