pyplot - ¿Cómo gestionar la división de grandes cantidades en Python?
title plt python (4)
En Python 3, el number / 10
volverá e intentará devolver un float
. Sin embargo, los valores de coma flotante no pueden tener un tamaño arbitrariamente grande en Python y si el number
es grande se generará OverflowError
.
Puede encontrar el máximo que los valores de punto flotante de Python pueden tomar en su sistema usando el módulo sys
:
>>> import sys
>>> sys.float_info.max
1.7976931348623157e+308
Para evitar esta limitación, en su lugar use //
para obtener un entero de la división de los dos enteros:
number // 10
Esto devolverá el valor de piso int
de number / 10
(no produce un flotador). A diferencia de los flotantes, los valores int
pueden ser tan grandes como los necesite en Python 3 (dentro de los límites de memoria).
Ahora puedes dividir los números grandes. Por ejemplo, en Python 3:
>>> 2**3000 / 10
OverflowError: integer division result too large for a float
>>> 2**3000 // 10
123023192216111717693155881327...
Tengo un número de 100 dígitos y estoy tratando de poner todos los dígitos del número en una lista, para que pueda realizar operaciones en ellos. Para hacer esto, estoy usando el siguiente código:
for x in range (0, 1000):
list[x] = number % 10
number = number / 10
Pero el problema al que me enfrento es que recibo un error de desbordamiento, como un número flotante / entero demasiado grande. Incluso intenté usar la siguiente alternativa
number = int (number / 10)
¿Cómo puedo dividir este gran número con el resultado en un tipo entero, que no es flotante?
Intenta int(number) % 10
. Solo puedes modificar enteros.
Python manejará automáticamente grandes int
s de longitud arbitraria. Lo que no hará es manejar float
s de longitud arbitraria, por lo que debe asegurarse de no obtener flotadores en el camino.
Si tiene un número entero y quiere que cada dígito en una lista, puede usar:
>>> map(int,list(str(number)))
[1, 5, 0, 3, 0, 0, 7, 6, 4, 2, 2, 6, 8, 3, 9, 7, 5, 0, 3, 6, 6, 4, 0, 5, 1, 2, 4, 3, 7, 8, 2, 5, 2, 4, 4, 5, 4, 8, 4, 0, 6, 6, 4, 5, 0, 9, 2, 4, 8, 9, 2, 9, 7, 8, 7, 3, 9, 9, 9, 7, 0, 1, 7, 4, 8, 2, 4, 4, 2, 9, 6, 9, 5, 1, 7, 1, 3, 4, 8, 5, 1, 3, 3, 1, 7, 9, 0, 1, 0, 1, 9, 3, 8, 4, 2, 0, 1, 9, 2, 9]
transforma el int en una cadena, luego list
tomará cada carácter de la cadena y lo pondrá en una lista. Finalmente, el map
convertirá cada elemento de la lista en un int nuevamente