in

Operadores de división en Python?

60 142162 1519038074

Generalmente, el tipo de datos de una expresión depende de los tipos de argumentos. Esta regla se aplica a la mayoría de los operadores: como cuando sumamos dos números enteros, el resultado debería ser un número entero. Sin embargo, en caso de división, esto no funciona bien porque hay dos expectativas diferentes. A veces esperamos que la división genere un número de punto flotante preciso y otras veces queremos un resultado entero redondeado hacia abajo.

En general, la definición de Python de división (/) dependía únicamente de los argumentos. Por ejemplo, en Python 2.7, dividir 20/7 era 2 porque ambos argumentos eran números enteros. Sin embargo, 20./7 generará 2.857142857142857 como salida porque los argumentos eran números de coma flotante.

La definición anterior de ‘/’ a menudo causaba problemas para las aplicaciones donde se usaban tipos de datos que el autor no esperaba.

Considere un programa simple de conversión de temperatura de Celsius a Fahrenheit, la conversión producirá dos resultados diferentes dependiendo de la entrada. Si un usuario proporciona un argumento entero (18) y otro argumento de punto flotante (18.0), las respuestas serán totalmente diferentes, aunque todas las entradas tengan los mismos valores numéricos.

#Conversion of celcius to Fahrendheit in python 2.6
>>> print 18*9/5 + 32
64
>>> print 18.0*9/5 + 32
64.4
>>> 18 == 18.0
True

Desde arriba podemos ver, cuando pasamos el 18.0, obtenemos la salida correcta y cuando pasamos 18, estamos obteniendo una salida incorrecta. Este comportamiento se debe a que en Python 2.x, el operador «/» funciona como una división de piso en caso de que todos los argumentos sean números enteros. Sin embargo, si uno de los argumentos es un valor flotante, el operador «/» devuelve un valor flotante.

Una función de conversión explícita (como float (x)) puede ayudar a prevenir esto. Sin embargo, la idea es que Python sea un lenguaje simple y escaso, sin un denso desorden de conversiones para cubrir el raro caso de un tipo de datos inesperado. A partir de la versión Python 2.2, se agregó un nuevo operador de división para aclarar lo que se esperaba. El operador / ordinario, en el futuro, devolverá resultados de punto flotante. Un operador de división especial, //, devolverá resultados redondeados hacia abajo.

>>> # Python 2.7 program to demonstrate the use of "//" for both integers and floating point number
>>> print 9//2
4
>>> print -9//2
-5
>>> print 9.0//2
4.0
>>> print -9.0//2
-5.0

Operación de división en Python 3.x

En Python 3.x, se eliminaron las fallas mencionadas anteriormente y el operador ‘/’ realiza una división de punto flotante para argumentos de punto entero y de punto flotante.

>>> #Conversion of celcius to Fahrendheit in python 3.x
>>> #Passing 18 (integer)
>>> print (18*9/5 + 32)
64.4
>>> #Passing 18.0(float)
>>> print(18.0*9/5 + 32)
64.4

Además, no hay diferencia cuando pasamos argumentos + ve o –ve.

>>> print(9/2)
4.5
>>> print(-9/2)
-4.5
>>> print(9.0/2)
4.5
>>> print(-9.0/2)
-4.5

raja

Publicado el 02-mayo-2019 11:29:32

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

canal tv 9323

¿Qué es MiTele Plus y cómo funciona? Transmisión de TV

apple touch icon@2

javascript: ¿Cómo puedo cargar archivos de forma asincrónica con jQuery?