pyplot python floating-point integer division

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