English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este artículo, conocerá los diferentes números utilizados en Python, cómo convertir un tipo de datos en otro y las operaciones matemáticas admitidas en Python.
Python支持整数,浮点数和复数。他们被定义为int,float和complex在Python数据类型中。
Python admite enteros, números de coma flotante y números complejos. Se definen como int, float y complex en los tipos de datos de Python.5los enteros y los números de coma flotante se separan por un punto decimal.5es un entero, mientras que
.0 es un número de coma flotante. + Los números complejos se escriben en la forma xyj, dondexes la parte real,y
es la parte imaginaria.
Podemos usar la función type() para determinar qué tipo de datos pertenece a una variable o valor, y también podemos usar la función isinstance() para verificar si pertenece a un tipo específico. 5 a = # Salida: <class 'int'> print(type(a)) # Salida: <class 'float'>5print(type( .0))8+3j) # Salida: ( 5 + 3c = j + 3) # Output: True print(c
print(isinstance(c, complex))15Aunque los enteros pueden tener cualquier longitud, los números de coma flotante solo pueden ser precisos hasta16posiciones decimales (el
posiciones inexactas).10Los números que procesamos todos los días son decimales (con2) sistema de numeración. Pero los programadores de computadoras (generalmente programadores嵌入式) necesitan usar binario (base16), hexadecimal (base8) y octal (base
) del sistema de numeración.
sistema de numeración | prefijo |
---|---|
Binario | '0b' o '0B' |
Octal | '0o' o '0O' |
Hexadecimal | '0x' o '0X' |
Aquí hay algunos ejemplos
# Output: 107 print(0b1101011) # Output: 253 (251 + 2) print(0xFB + 0b10) # Output: 13 print(0o15)
Al ejecutar el programa, la salida será:
107 253 13
Podemos convertir un número a otro tipo de número. Esto también se llama conversión forzada.
Si uno de los operandos es un número de coma flotante, las operaciones de adición, sustracción, etc., convertirán implícitamente (automáticamente) el entero en coma flotante.
>>> 1 + 2.0 3.0
Podemos ver en1(entero)se convierte a fuerza en1.0 (float) para realizar operaciones de adición, y el resultado también es un número de coma flotante.
También podemos usar funciones integradas como int(), float() y complex() para realizar conversiones explícitas entre tipos. Estas funciones pueden incluso convertir desdecadenaconversión.
>>> int(2.3) 2 >>> int(-2.8) -2 >>> float(5) 5.0 >>> complejo('3+5j') (3+5j)
cuando se convierte de float a entero, el número se truncará (al entero más cercano a cero).
La clase integrada float de Python realiza algunos cálculos que pueden sorprendernos. Todos sabemos1.1y2.2la suma es3.3Pero Python parece no estar de acuerdo.
>>> (1.1 + 2.2) == 3.3 False
¿Qué está pasando aquí?
Resulta que los números flotantes se implementan en la hardware de la computadora como fracciones binarias, ya que la computadora solo entiende binario (0 y1)。 Por esta razón, la mayoría de los números decimales que conocemos no se pueden almacenar exactamente en nuestra computadora.
Vamos a dar un ejemplo. No podemos representar la fracción1/3representado como número decimal. Esto dará 0.33333333 ...infinito, solo podemos hacer una aproximación.
El número decimal original 0.1Esto causará una fracción binaria infinita 0.000110011001100110011 ...y nuestra computadora solo almacena una cantidad limitada de números binarios.
Esto solo se acercará a 0.1pero nunca serán iguales. Por lo tanto, esto es una limitación de la hardware de la computadora, no un error en Python.
>>> 1.1 + 2.2 3.3000000000000003
Para superar este problema, podemos usar el módulo decimal adjunto a Python. La precisión de los números flotantes puede alcanzar15decimales, mientras que el módulo decimal tiene una precisión configurable por el usuario.
import decimal # Salida: 0.1 print(0.1) # Salida: Decimal('0.1000000000000000055511151231257827021181583404541015625') print(decimal.Decimal(0.1))
Cuando queremos realizar cálculos decimales como en la escuela, utilizaremos este módulo.
También mantiene el significado. Sabemos que25.50 kilogramos es25.5Los kilogramos son más precisos, ya que tienen dos decimales en lugar de uno.
from decimal import Decimal as D # Salida: Decimal('3.3') print(D('1.1') + D('2.2)) # Salida: Decimal('3.000') print(D('1.2') * D('2.50'))
Atención a los ceros adicionales en el ejemplo anterior.
Podríamos preguntar, ¿por qué no usar Decimal en lugar de float cada vez? La principal razón es la eficiencia. Realizar operaciones de coma flotante debe ser más rápida que las operaciones decimales.
En los siguientes casos, generalmente utilizamos decimales.
Cuando realizamos aplicaciones financieras que requieren una representación decimal exacta.
Cuando queremos especificar el nivel de precisión requerido.
Cuando queremos implementar el concepto de precisión de dígitos decimales.
Cuando queremos realizar operaciones como en la escuela
Python proporciona operaciones con decimales a través de su módulo fractions.
Los decimales tienen un numerador y un denominador, ambos enteros. Este módulo admite algoritmos de números racionales.
Podemos crear objetos Fraction de varias maneras.
import fractions # Output: 3/2 print(fractions.Fraction(1.5)) # Output: 5 print(fractions.Fraction(5)) # Output: 1/3 print(fractions.Fraction(1,3))
Al crear fracciones a partir de float, podríamos obtener algunos resultados inusuales. Esto se debe a la representación imperfecta del número flotante binario discutida en la sección anterior.
Por suerte, los decimales nos permiten usar ejemplos de cadenas. Esta es la opción preferida cuando se utilizan números decimales.
import fractions # Used as float # Output: 2476979795053773/2251799813685248 print(fractions.Fraction(1.1)) # Used as string # Output: 11/10 print(fractions.Fraction('1.1))
This data type supports all basic operations. Here are some examples.
from fractions import Fraction as F # Output: 2/3 print(F(1,3) + F(1,3)) # Output: 6/5 print(1 / F(5,6)) # Output: False print(F(-3,10) > 0) # Output: True print(F(-3,10) < 0)
Python provides similar modules, such as math and random, which can perform different mathematical operations, such as trigonometric functions, logarithms, probability, and statistics, etc.
import math # Output: 3.141592653589793 print(math.pi) # Output: -1.0 print(math.cos(math.pi)) # Output: 22026.465794806718 print(math.exp(10)) # Output: 3.0 print(math.log10(1000)) # Output: 1.1752011936438014 print(math.sinh(1)) # Output: 720 print(math.factorial(6))
This isIn the Python math moduleList of available complete functions and properties.
import random # Output: 16 print(random.randrange(10,20)) x = ['a', 'b', 'c', 'd', 'e'] # Get a random option print(random.choice(x)) # Shuffle the order of x list random.shuffle(x) # Print the x after being shuffled print(x) # Print random element print(random.random())
Output results (random results):
19 c ['e', 'a', 'd', 'c', 'b'] 0.707947055817621
This isIn the Python random moduleList of available complete functions and properties.