Pourquoi Python convertir en 0.0 en silence?

voix
2

Notez dans le code ci - dessous que la sortie devient tout à coup 0.0pour 0.0005**99.

In [1]: 0.0005**97                                                              
Out[1]: 6.31e-321

In [2]: 0.0005**98                                                              
Out[2]: 5e-324

In [3]: 0.0005**99                                                              
Out[3]: 0.0

In [4]: 0.0005**100                                                             
Out[4]: 0.0

Je me attendais à voir une Underflowerreur ou une sorte d'un avertissement que cela se produit.

Je codage d' un filtre anti-spam en utilisant l'algorithme Naive Bayes et les calculs que vous voyez ci - dessus sont communs pour les messages longs. Bien que je peux ajouter quelques solutions de contournement mathématiques, je pense toujours que ce problème est que cette « conversion » pour s'en 0.0silence.

J'ai couru le code ci-dessus dans Pyhton 3.7.3.

Créé 09/10/2019 à 12:55
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

En Python, tout arrondi à virgule flottante se fait en silence, il se trouve dans ce cas, que le nombre le plus proche de virgule flottante que vous essayez de représenter est plus proche de 0 que le nombre à virgule flottante le plus petit> 0.

Comme quelques-uns des commentaires ont suggéré, en utilisant l'espace de journal vous aidera à gérer la représentation de ces très petits nombres.

Créé 09/10/2019 à 13:25
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more