Maison >développement back-end >Tutoriel Python >Comment vérifier si un float représente un entier en Python ?

Comment vérifier si un float représente un entier en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-13 01:11:02558parcourir

How to Check if a Float Represents an Integer in Python?

Détermination de l'intégrité des valeurs flottantes

Dans cet extrait de code, vous recherchez la plus grande racine cubique qui est un nombre entier, inférieur à 12 000 :

processing = True
n = 12000
while processing:
    n -= 1
    if n ** (1/3) == #checks to see if this has decimals or not

Pour vérifier si une valeur flottante est un entier, vous pouvez utiliser la méthode float.is_integer() :

>>> (1.0).is_integer()
True
>>> (1.555).is_integer()
False

Notez que dans Python 2, 1/3 donne 0 en raison de la division au sol pour les opérandes entiers, et l'arithmétique à virgule flottante peut être inexacte. Ajuster la boucle dans cette optique :

for n in range(12000, -1, -1):
    if (n ** (1.0/3)).is_integer():
        print n

On obtient les résultats attendus :

27
8
1
0

Cependant, en raison de l'imprécision de l'arithmétique à virgule flottante, les nombres supérieurs à 3 au cube ( dont 10648) sont omis. Pour résoudre ce problème, vous pouvez plutôt rechercher des nombres proches du nombre entier :

import math

for n in range(12000, -1, -1):
    if math.isclose((n ** (1.0/3)), round(n ** (1.0/3))):
        print n

Cette variante génère :

10648
27
8
1
0

Pour Python 3.5 et versions ultérieures, vous pouvez utiliser les mathématiques. Fonction isclose() pour vérifier si une valeur à virgule flottante se trouve dans une marge personnalisable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn