Pregunta

Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2/2
1.0

¿Es esto lo que se pretende?Recuerdo fuertemente que regresaron versiones anteriores. int/int=int?¿Qué debo hacer? ¿Hay un nuevo operador de división o debo lanzar siempre?

¿Fue útil?

Solución

Tome un vistazo a PEP-238 : Cambiar el operador de división

  

El operador // estará disponible para solicitar la división de suelo sin ambigüedad.

Otros consejos

Vaya, que se encuentra inmediatamente 2//2.

Espero que podría ayudar a alguien al instante.

Comportamiento de la División de operador en Python 2.7 y Python 3

  

En Python 2.7:. Por defecto, operador de división volverá salida entero

para obtener el resultado en doble múltiple 1.0 a "dividendo o divisor"

100/35 => 2 #(Expected is 2.857142857142857)
(100*1.0)/35 => 2.857142857142857
100/(35*1.0) => 2.857142857142857
  

En Python 3

// => used for integer output
/ => used for double output

100/35 => 2.857142857142857
100//35 => 2
100.//35 => 2.0    # floating-point result if divsor or dividend real

La respuesta aceptada ya menciona PEP 238.Sólo quiero agregar un vistazo rápido detrás de escena para aquellos interesados ​​en lo que está sucediendo sin leer el PEP completo.

Operadores de mapas de Python como +, -, * y / a funciones especiales, como p.e. a + b es equivalente a

a.__add__(b)

Con respecto a la división en Python 2, por defecto solo hay / que se asigna a __div__ y el resultado depende de los tipos de entrada (p. ej. int, float).

Python 2.2 introdujo el __future__ característica division, que cambió la semántica de división de la siguiente manera (TL;DR de PEP 238):

  • / mapas para __truediv__ que debe "devolver una aproximación razonable del resultado matemático de la división" (cita de PEP 238)
  • // mapas para __floordiv__, que debería devolver el resultado de suelo de /

Con Python 3.0, los cambios de PEP 238 se convirtieron en el comportamiento predeterminado y ya no existe un método especial. __div__ en el modelo de objetos de Python.

Si desea utilizar el mismo código en Python 2 y Python 3, utilice

from __future__ import division

y atenerse a la semántica PEP 238 de / y //.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top