7 votes

Question Python sur les exposants et les int.

Par curiosité, j'ai effectué l'opération suivante :

>>> int(1e100)

Et, le résultat était :

10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104L

Pourquoi ? Pourquoi ça ne ressemble pas à :

10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L

Est-ce un produit de la int fonction, ou du stockage d'une grande long ?

9voto

Mark Ransom Points 132545

1e100 est un nombre à virgule flottante, avec 53 bits de précision dans le significand . Le nombre entier que vous essayez de représenter nécessite 333 bits pour être exact, ce qui implique un certain nombre d'arrondis. Les bits du bas sont substitués pour obtenir le nombre en base 2 le plus proche du résultat souhaité.

Voir : http://docs.python.org/tutorial/floatingpoint.html#representation-error

1voto

Pat Points 2480

Il a été converti en flottant et ensuite affiché comme un nombre entier. Bienvenue dans le monde imprécis des arrondis.

0voto

Foo Bah Points 11566

1e100 est un flottant (en général, l'utilisation de l'attribut e implique un flotteur) :

>>> type (1e100)
<type 'float'>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X