En tant que partie d'un code de test unitaire que j'écris, j'ai écrit la fonction suivante. Le but est de déterminer si «a» peut être arrondi à «b», indépendamment de la précision de «a» ou de «b».Python: a peut être arrondi à b dans le cas général
def couldRoundTo(a,b):
"""Can you round a to some number of digits, such that it equals b?"""
roundEnd = len(str(b))
if a == b:
return True
for x in range(0,roundEnd):
if round(a,x) == b:
return True
return False
Voici quelques sortie de la fonction:
>>> couldRoundTo(3.934567892987, 3.9)
True
>>> couldRoundTo(3.934567892987, 3.3)
False
>>> couldRoundTo(3.934567892987, 3.93)
True
>>> couldRoundTo(3.934567892987, 3.94)
False
Pour autant que je peux dire, cela fonctionne. Cependant, j'ai peur de me fier à cela étant donné que je n'ai pas une compréhension parfaite des problèmes concernant la précision en virgule flottante. Quelqu'un pourrait-il me dire si c'est une façon appropriée d'implémenter cette fonction? Si non, comment pourrais-je l'améliorer?
J'avais le sentiment que cela avait été implémenté quelque part. J'accepte ceci parce que quantifier fait exactement ce que je cherche. Je vous remercie. – Wilduck