resta redondear parte operador numeros módulo enteros entera doble div como barra python integer python-3.x division

redondear - La división entera de Python produce flotación



resta en python (4)

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

El operador // estará disponible para solicitar la división del piso sin ambigüedades.

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

¿Esto es intencionado? Recuerdo fuertemente las versiones anteriores que devuelven int/int=int ? ¿Qué debo hacer? ¿Hay un nuevo operador de división o debo lanzar siempre?


Espero que pueda ayudar a alguien al instante.

Comportamiento del operador de división en Python 2.7 y Python 3

En Python 2.7: de forma predeterminada, el operador de división devolverá la salida entera.

para obtener el resultado en doble múltiple 1.0 para "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 . Solo quiero agregar un vistazo rápido detrás de las escenas para aquellos interesados ​​en lo que está sucediendo sin leer todo el PEP.

Python mapea operadores como + , - , * y / a funciones especiales, de modo que, por ejemplo, a + b es equivalente a

a.__add__(b)

En cuanto a la división en Python 2, solo existe por defecto / que se asigna a __div__ y el resultado depende de los tipos de entrada (por ejemplo, int , float ).

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

  • / maps a __truediv__ que debe "devolver una aproximación razonable del resultado matemático de la división" (cita de PEP 238)
  • // asigna a __floordiv__ , que debe devolver el resultado de piso de /

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

Si desea usar el mismo código en Python 2 y Python 3 use

from __future__ import division

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


Vaya, encontré inmediatamente 2//2 .