J'ai besoin d'une fonction qui obtient une liste de flottants, et calcule le gcd de cette liste.gcd de la liste des flottants - sortie incorrecte des fractions
Par exemple, étant donné l'entrée [1/2.0, 1/3.0]
je pense que la sortie soit 1/6.0
Cependant ce n'est pas. il imprime 5.55111512313e-17
ou en d'autres termes, zéro. Ceci est mon code:
def gcd(L):
return reduce(fractions.gcd, L)
print gcd([1/2.0, 1/3.0])
Qu'est-ce qui ne va pas ici? Y a-t-il un moyen de le réparer?
Le flottant binaire 64 bits IEEE 754 le plus proche de 1/3,0 est 0,333333333333333314829616256247390992939472198486328125. Vous devrez peut-être fournir les entrées sous la forme d'instances de fractions qui peuvent représenter exactement 1/3.0, sans passer d'abord par float. –
@SergeBallesta Il est bien défini, comme le plus grand nombre qui est un facteur de toutes les entrées. Ce n'est pas ce dont le PO a besoin. –