Python : a может быть округлено до b в общем случае

Как часть кода для модульного тестирования, который я пишу, я написал следующую функцию. Его цель - определить, можно ли округлить «a» до «b», независимо от того, насколько точны «a» или «b».

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

Вот некоторые выходные данные функции:

>>> couldRoundTo(3.934567892987, 3.9)
True
>>> couldRoundTo(3.934567892987, 3.3)
False
>>> couldRoundTo(3.934567892987, 3.93)
True
>>> couldRoundTo(3.934567892987, 3.94)
False

Насколько я могу судить, это работает. Тем не менее, я' m боится полагаться на это, учитывая, что я не очень разбираюсь в вопросах, касающихся точности операций с плавающей запятой. Может ли кто-нибудь сказать мне, подходит ли это для реализации этой функции? Если нет, то как я могу его улучшить?

7
задан Wilduck 3 October 2010 в 06:41
поделиться