Je veux faire « == » comparaison de l'utilisation de l'opérateur approximatif dans mon programme: valeurs à virgule flottante x et y sont égaux (==) sicomparaison approximative en python
abs(x-y)/(0.5(x+y)) < 0.001
Ce qui est une bonne façon de le faire? Étant donné que float est un type intégré, je ne pense pas que je puisse redéfinir l'opérateur ==, n'est-ce pas?
Notez que je voudrais utiliser d'autres fonctionnalités de float, la seule chose que je voudrais changer est l'opérateur d'égalité.
EDIT:
Merci pour les réponses, et je comprends vos arguments sur la lisibilité et d'autres questions. Cela dit, je préférerais, si possible, continuer à utiliser le type float normal, au lieu d'avoir une nouvelle classe ou une nouvelle fonction de comparaison. Est-il même possible de redéfinir == opérateur pour les flotteurs réguliers?
Mes raisons sont ::
(a) tout le monde en utilisant le programme que je vous écris veut que les flotteurs à comparer cette façon
(b) il n'y a aucun moyen dans le anyone monde voudrait jamais utiliser le défaut == pour les flotteurs .. Pourquoi est-ce même dans la langue ???
(c) Je n'aime pas les mots supplémentaires dans le code; en utilisant évidemment les résultats float existants dans aucun changement dans le code que ce soit
EDIT 2.
Maintenant que je sais que je ne peux pas surcharger l'opérateur == pour flotteur, je dois changer ma question. Il deviendra si différent que je vais faire un nouveau à custom comparison for built-in containers
Découvrez l'impact sur la lisibilité, en particulier pour les autres. –
L'opérateur de surcharge '==' semble mignon, mais l'utilisation d'une fonction séparée pour cela est presque toujours une meilleure idée. – Constantin
J'ai de nombreuses comparaisons de listes de nombres (par exemple) qui deviendraient beaucoup plus alambiquées si je ne pouvais pas redéfinir l'opérateur par défaut == .. – max