Sto facendo un enigma in cui devo occuparmi dei numeri dell'ordine 10^18. Tuttavia, trovo Python non è in grado di gestire numeri molto grandi in tutte le aree.Perché python non gestisce numeri molto grandi in tutte le aree?
Per essere precisi, se assegniamo a = 1000000000000000000 (10^18) e facciamo i calcoli aritmetici di base (+, -, /, *), la sua risposta. Tuttavia, la sua mostrando OverflowError quando lo uso nella gamma()
>>> a = 1000000000000000000
>>> a/2
500000000000000000L
>>> a*2
2000000000000000000L
>>> a+a
2000000000000000000L
>>> a*a
1000000000000000000000000000000000000L
>>> range(a)
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
range(a)
OverflowError: range() result has too many items
>>> xrange(a)
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
xrange(a)
OverflowError: Python int too large to convert to C long
ho usato Python 2.7.
- Come posso gestire tali casi ?, Qual è il modo migliore per gestire i puzzle che contengono tali numeri. (Un riferimento tutorial/libro sarebbe apprezzato)
- Perché Python non è in grado di gestire la cosa in range()/xrange()
mi piacerebbe farlo in python 2.7 utilizzando le funzioni inbuild. Non è possibile?
Possibile duplicato http://stackoverflow.com/questions/1482480/xrange2100-overflowerror-long-int-too-large-to-vert-to-int –
Dubito che stai andando a risolvere il tuo puzzle nel modo giusto . Il conteggio fino a 10^18 con python su un computer di oggi richiederebbe un ordine nell'ordine di 10000 anni. –
itertools.count() sembra essere un'opzione, ma il conteggio richiede molto tempo. C'è qualche altra opzione efficiente (considerando le situazioni in cui dobbiamo contare grandi valori, risolvendo enigmi) – Surya