Python 四舍五入问题

2 投票
5 回答
732 浏览
提问于 2025-04-16 03:36

我在做除法的时候遇到了问题。

my max_sum = 14
total_no=4  

所以当我这样做的时候

print "x :", (total_sum/total_no)

,我得到的是3,而不是3.5。

我尝试了很多方法来打印结果,但都没有成功,有人能告诉我怎么才能得到3.5这个格式吗?

谢谢!

5 个回答

1

把最大值设置为14.0,或者把总数设置为4.0。

2

你在用两个整数相除,结果也会是一个整数,这在Python 2中是这样的。你可以把其中一个数字变成小数,比如把max_sum = 14.0或者total_no = 4.0,这样就能得到小数结果了。

如果你想让Python 2.X在这方面表现得更直观一点,可以在你的脚本顶部加上

from __future__ import division

。在Python 3中,除法的结果就会像你预期的那样。

9

在Python 2.x中,两个整数相除时,默认会得到一个整数。这常常让人感到困惑,而在Python 3.x中这个问题已经解决了。你可以通过将其中一个数字转换成浮点数(float)来绕过这个问题,这样另一个数字也会自动转换:

float( 14 ) / 4 == 3.5

相关的PEP(Python增强提案)是 第238号

当前的除法(/)运算符对于数值参数有一个模糊的含义:如果参数是整数或长整型,它会返回数学除法结果的下限值;但如果参数是浮点数或复数,它会返回一个合理的除法结果的近似值。这使得在不期望整数但可能作为输入的情况下,期望浮点数或复数结果的表达式容易出错。

在Python 2.x中没有改变这个行为是因为会有严重的向后兼容性问题,但这是Python 3.x中的一个主要变化。你可以在你的Python脚本顶部强制使用新的除法方式:

from __future__ import division

这是一种 __future__-导入,用于强制进行语法更改,否则可能会导致你的脚本出错。还有很多其他的 __future__ 导入;在准备迁移到Python 3.x时,使用这些通常是个好主意。

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

撰写回答