Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 在Python中对数字进行四舍五入_Python 2.7 - Fatal编程技术网

Python 2.7 在Python中对数字进行四舍五入

Python 2.7 在Python中对数字进行四舍五入,python-2.7,Python 2.7,我正在尝试使用python中的数学模块对一个数字进行取整 所以当我这么做的时候 print math.ceil(21/10) 我得到了“2.0”,这是正确的 print math.ceil(27/10) 我仍然得到“2.0” 我想得到3,因为它最接近2.7 有人能建议一个解决办法吗 提前感谢。您对Python 2.x中的除法运算符感到惊讶。对于整数,它进行整数除法21/10导致2和27/10导致2 使用21.0/10和27.0/10,您将得到正确答案 在Python3.x中,如果除法不是偶数

我正在尝试使用python中的数学模块对一个数字进行取整

所以当我这么做的时候

print math.ceil(21/10)
我得到了“2.0”,这是正确的

print math.ceil(27/10)
我仍然得到“2.0”

我想得到3,因为它最接近2.7

有人能建议一个解决办法吗


提前感谢。

您对Python 2.x中的除法运算符感到惊讶。对于整数,它进行整数除法
21/10
导致
2
27/10
导致
2

使用
21.0/10
27.0/10
,您将得到正确答案

在Python3.x中,如果除法不是偶数(将有余数),整数的除法将自动升级为
float
。在Python2.7中,您可以使用来自uuu future\uuuu.import division的
来获得这种行为


顺便说一下,21/10的整数上限应该是3。

问题是Python认为27/10是整数,因此计算结果为2。如果你写27/10.0,它将使它们浮动,事情将按照你的意愿运行。

我想你想要一轮:

from __future__ import division

print round(27/10)
3.0
print round(21/10)
2.0
math.ceil
将始终四舍五入,
round
将四舍五入

由于python2处理整数除法的方式,您只能从math.ceil(21/10)
中获得2


python2中的
21/10
2

我想您正在寻找@Aruistante Hi,谢谢回复。但即使是打印轮(27/10)也让我得到了2.0而不是3.0:-(啊,对了,错过了
Python2.7
标记。请看@steveha的答案。非常感谢。这很有效!但很奇怪。math.ceil(21/10)得到--2.0 | math.ceil(21.0/10)得到--3.0 | math.ceil(27/10)得到--2.0 | math.ceil(27.0/10)gets--3.0难道没有一个简单的方法可以得到一个完美的答案吗?如果你能提供建议,那就太好了。再次感谢
非常确定21/10的整数上限应该是3
是的,是的,应该是,因为
上限的全部要点是总是四舍五入。而@user3642558这与
四舍五入的原因相同由于不起作用,它在
2
(21和10的整数除法)上执行
ceil
,即
2
。这就是问题所在,21/10的上限是2.0,而21.0/10的上限是3.0,这很奇怪
21/10
进行整数除法,没有余数。如果你使用
divmod(21,10)
,你会得到答案
(2,1)
但是使用
/
你只需要得到
2
。通过让至少一个数字成为
浮点
你得到浮点除法,它保留一个小数部分,然后
math.ceil()
有一个小数要舍入。当你得到的答案是
2
,然后把它传递给
math.ceil()
2
被强制为
float
但没有分数。对了,哇,python总是令人惊讶!感谢所有的回答。我认为@Padraic Cunningham终于有了正确的解决方案。math.ceil(21/10.0)再次是3.0,而我们希望它是2.0:-(