División en Python 2.7. y 3.3 [duplicate]
Esta pregunta ya tiene una respuesta aquí:
- División Python 12 respuestas
¿Cómo puedo dividir dos números en Python 2.7 y obtener el resultado con decimales?
No entiendo por qué hay diferencia:
En Python 3:
>>> 20/15
1.3333333333333333
En Python 2:
>>> 20/15
1
¿No es esto un módulo en realidad?
4 answers
En python 2.7, el operador /
es la división entera si las entradas son enteros.
Si quieres división flotante (que es algo que siempre prefiero), simplemente usa esta importación especial:
from __future__ import division
Véalo aquí:
>>> 3 / 2
1
>>> from __future__ import division
>>> 3 / 2
1.5
>>>
La división entera se logra usando //
, y modulo usando %
>>> 3 % 2
1
>>> 3 // 1
3
>>>
EDITAR
Como ha comentado user2357112
, esta importación debe hacerse antes que cualquier otra importación normal.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-23 19:07:56
En Python 3, /
es división flotante
En Python 2, /
es la división entera (suponiendo int
entradas)
Tanto en 2 y 3, //
es la división entera
(Para obtener la división flotante en Python 2 se requiere que cualquiera de los operandos sea un flotador, ya sea como 20.
o float(20)
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-23 19:05:11
En Python 2.x, asegúrese de tener al menos un operando de su división en float
. Múltiples maneras de lograr esto como los siguientes ejemplos:
20. / 15
20 / float(15)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-23 19:00:20
"/" es la división entera en python 2 por lo que va a redondear a un número entero. Si desea que se devuelva un decimal, simplemente cambie el tipo de una de las entradas a float:
float(20)/15 #1.33333333
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-23 19:02:01