Comment gérer la division de nombres énormes en Python?
J'ai un 100 chiffres et je suis en train de mettre tous les chiffres du numéro dans une liste, afin que je puisse effectuer des opérations sur eux. Pour ce faire, j'utilise le code suivant:
for x in range (0, 1000):
list[x] = number % 10
number = number / 10
Mais le problème je suis confronté est que j'obtiens une erreur de dépassement de quelque chose comme trop grand nombre flottant/entier. J'ai même essayé d'utiliser les alternatives suivantes
number = int (number / 10)
Comment puis-je diviser ce nombre énorme avec le résultat de type entier, c'est pas de flotte?
OriginalL'auteur Ambidextrous | 2015-01-14
Vous devez vous connecter pour publier un commentaire.
En Python 3,
number /10
vais essayer de revenir unfloat
. Cependant, les valeurs à virgule flottante ne peut pas être arbitrairement grande taille en Python et sinumber
est une grandeOverflowError
sera soulevée.Vous pouvez trouver le maximum que Python valeurs à virgule flottante peut prendre sur votre système à l'aide de la
sys
module:Pour contourner cette limitation, au lieu d'utiliser
//
pour obtenir un nombre entier de retour de la division de deux entiers:Ce sera le retour de la
int
valeur plancher denumber /10
(il ne produit pas un float). Contrairement à de flotteurs,int
valeurs peuvent être aussi grand que vous en avez besoin pour être en Python 3 (dans les limites de la mémoire).Vous pouvez maintenant diviser les grands nombres. Par exemple, dans Python 3:
En Python 3, il n'y est pas
long
type (les nombres entiers peuvent être n'importe quelle taille). Il fonctionne en Python 2 avec les deux types.Génial. Ne savais pas à propos // division de l'avant.
OriginalL'auteur Alex Riley
Si vous avez un entier et vous voulez que chaque chiffre dans une liste, vous pouvez utiliser:
il transformer l'int en string, puis
list
aura lieu à chaque caractère de la chaîne et de la mettre dans une liste. Enfin,map
vous permet de convertir chaque élément de la liste dans un int à nouveauOriginalL'auteur fredtantini
Python va automatiquement gérer de gros
int
s de longueur arbitraire. Ce qu'il ne fera pas est de gérerfloat
s de longueur arbitraire, donc vous devez vous assurer que vous n'obtenez pas de chars le long de la voie.ouais comme mentionné précédemment, à l'aide de l'opérateur // vous aidera à vous assurer que votre réponse est toujours un int.
OriginalL'auteur ZekeDroid
Essayer
int(number) % 10
. Vous ne pouvez mod entiers.C'est intéressant parce que
x mod 10
devrait être dans le sous-ensemble de [0, 9]; ainsi, la division par 10 de 0 par la division entière.Oh, attendez, python
/
n'est pas la division entière.//
est le chemin à parcourir.OriginalL'auteur erip