我在划分时遇到了问题
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( 14 ) / 4 == 3.5
相关 PEP编号为 238:
当前除法 (/) 运算符对数值参数的含义不明确:如果参数是整数或长整数,它会返回除法的数学结果的下限,但如果参数是浮点数或复数,它会返回除法结果的合理近似值. 当整数不是预期的但可能作为输入时,这使得预期浮点或复杂结果的表达式容易出错。
由于严重的向后兼容性问题,它在 Python 2.x 中没有更改,但它是 Python 3.x 中的主要更改之一。你可以用这条线强制新的划分
from __future__ import division
在 Python 脚本的顶部。这是一个__future__
-import - 它用于强制进行语法更改,否则可能会破坏您的脚本。还有很多其他的__future__
进口;在准备迁移到 Python 3.x 时,它们通常是一个好主意。
请注意,//
运算符始终表示整数除法;如果你真的想要这种行为,你应该优先使用它而不是/
. 请记住,“显式胜于隐式”!
您正在划分两个整数,结果也将是一个整数,在 python 2 中。尝试将您的操作数之一设为浮点数,例如max_sum = 14.0
ortotal_no = 4.0
以获得浮点数结果。
如果您希望 python 2.X 在这方面表现得更直观,您可以添加
from __future__ import division
在脚本的顶部。在 python 3 中,除法按您的预期工作。
使 max_sum=14.0 或 total_no=4.0
你正在做一个整数运算,所以你得到最接近的整数结果: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