2013-12-06 2 views
1

Я новичок в python. Я пытался решить матричную проблему, в которой я должен использовать условие выхода в цикле, например, если столбец и строка матрицы составляют 3 или 4, тогда я хочу запустить цикл 2 раза, а если col и row - 5 или 6, тогда 3 раза.Почему math.ceil() дают разные ответы

>>> math.ceil(1.5) 
2.0 
>>> i=3 
>>> math.ceil(i/2) 
1.0 

ответ

2

Это потому, что 3/2 не в Python 2, it's 11.5. Сделайте from __future__ import division, и тогда это будет то, что вы ожидаете.

+0

почему это так, что причина этого? – InvincibleWolf

+3

@ vj1207 [Вот объяснение] (http://python-history.blogspot.com/2009/03/problem-with-integer-division.html) Гвидо. – user4815162342

0

попробовать это первый:

i=3/2 
print i 
j=float(3)/2 
print j 
print math.ceil(j) 

вы должны увидеть

1 
1.5 
2.0 

на пути питон сделку с целочисленным делением занимает нижнюю границу.

Ссылка:

http://docs.python.org/2/reference/expressions.html

+0

Правильно. Обратите внимание на ** нижнюю ** часть. Целочисленное деление в раундах Python до -инфинитного для отрицательных значений **, а не ** в направлении 0. –

Смежные вопросы