Beneficios del operador de división doble sobre el operador de división única en Python

El operador de división doble en Python devuelve el valor mínimo para argumentos enteros y de punto flotante después de la división.

# A Python program to demonstrate use of  
# "//" for both integers and floating points
  
print(5//2)
print(-5//2)
print(5.0//2)

Producción:

2
-3
2.0

El operador de división simple se comporta de manera anormal generalmente para números muy grandes. Considere el siguiente ejemplo.

Ejemplos 1:

# single division
print(1000000002/2)
  
# Gives wrong output
print(int(((10 ** 17) + 2)/2))
  
# Gives Correct output
print(((10 ** 17) + 2)//2)

Producción:

500000001.0
50000000000000000
50000000000000001

Ejemplo 2:

x = 10000000000000000000006
if int(x / 2) == x // 2:
    print("Hello")
else:
    print("World")

Producción:

World

La salida debería haber sido Hola si el operador de división simple se comportara normalmente porque 2 divide correctamente a x. Pero la salida es Mundial porque los resultados después del Operador de división simple y el Operador de división doble NO SON LOS MISMOS .

Este hecho se puede usar para programas como encontrar la suma de los primeros n números para un n grande.

n = 10000000000
  
s1 = int(n * (n + 1) / 2)
s2 = n * (n + 1) // 2
  
print("Sum using single division operator : ", s1)
print("Sum using double division operator : ", s2)

Producción:

Sum using single division operator :  50000000005000003584
Sum using double division operator :  50000000005000000000

Por lo tanto, el resultado encontrado al usar el operador de división simple es Incorrecto, mientras que el resultado encontrado al usar el operador de división doble es Correcto. Este es un gran beneficio del Operador de división doble sobre el Operador de división única en Python.

Publicación traducida automáticamente

Artículo escrito por thekushalghosh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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