Python tiene tres tipos distintos de números integrados: enteros (int), de coma flotante (float) y complejos (complex).
Las fracciones (fractions.Fraction) y los decimales (decimal.Decimal) también están disponibles mediante importación desde la biblioteca estándar.
Los números enteros, incluidos los números hexadecimales (hex()), octales (oct()) y binarios (bin()) sin decimales, también se identifican como ints:
# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>
>>> -12
-12
Los números que contienen un punto decimal (con o sin parte fraccionaria) se identifican como floats:
>>> 3.45
3.45
>>> type(3.45)
<class 'float'>
Python admite completamente la aritmética entre estos distintos tipos de números y convertirá los números más estrechos para que coincidan con sus homólogos menos estrechos cuando se usen con los operadores aritméticos binarios (+, -, *, /, // y %).
Todos los números (excepto los complejos) admiten todas las operaciones aritméticas, evaluadas según la precedencia de operadores.
El soporte para funciones matemáticas (más allá de + y -) para números complejos se puede encontrar en el módulo cmath.
Los operadores de suma y resta se comportan como en las matemáticas normales.
Si uno o varios de los operandos es un float, los int restantes también se convertirán a float:
>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0
Al igual que con la suma y la resta, la multiplicación convertirá los números más estrechos para que coincidan con sus homólogos menos estrechos:
>>> 3 * 2
6
>>> 3 * 2.0
6.0
La división siempre devuelve un float aunque el resultado sea un número entero:
>>> 6/5
1.2
>>> 6/2
3.0
Si necesitas un resultado int, puedes usar la división entera para truncar el resultado.
La división entera se realiza con el operador //:
>>> 6//5
1
>>> 6//2
3
El operador módulo (%) devuelve el residuo de la división de los dos operandos:
# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0
# The result of % is 2 here, because 3 only goes into 5 once, with 2 left over
>>> 5 % 3
2
Otra forma de ver 5 % 3:
>>> whole_part = int(5/3)
1
>>> decimal_part = 5/3 - whole_part
0.6666666666666667
>>> whole_remainder = decimal_part * 3
2.0
La exponenciación se realiza con el operador **:
>>> 2 ** 3
8
>>> 4 ** 0.5
2
Los números se pueden convertir de int a float y de float a int con las funciones integradas int() y float():
>>> int(3.45)
3
>>> float(3)
3.0
Python proporciona una función integrada round(<number>, <decimal_places>) para redondear un número de coma flotante a un número determinado de decimales.
Si no se especifica ningún número de decimales, el número se redondea al entero más cercano y devolverá un int:
>>> round(3.1415926535, 2)
3.14
>>> round(3.1415926535)
3
Python te permite usar paréntesis para agrupar expresiones. Esto es útil cuando quieres anular el orden de operaciones predeterminado.
>>> 2 + 3 * 4
14
>>> (2 + 3) * 4
20
Python sigue la regla PEMDAS para la precedencia de operadores.
Esto significa que los cálculos dentro de () tienen la prioridad más alta, seguidos de **, luego *, /, //, %, + y -:
>>> 2 + 3 - 4 * 4
-11
>>> (2 + 3 - 4) * 4
4
# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 256, then 2 + 768
>>> 2 + 3 * 4 ** 4
770
Los enteros en Python tienen precisión arbitraria: el número de dígitos solo está limitado por la memoria disponible del sistema anfitrión.
Los números de coma flotante normalmente se implementan usando un double en C (15 decimales de precisión), pero su representación varía según el sistema anfitrión.
Los números complejos tienen una parte real y una parte imaginary, ambas representadas por números de coma flotante.
Para ver un análisis más detallado de los problemas y las limitaciones de la aritmética de coma flotante en los distintos lenguajes de programación, echa un vistazo a 0.30000000000000004.com y el tutorial de Python.