def float_validator(minimum=None, maximum=None, allow_exponent=False):
    """ Creates a callable which will validate text input against the
    provided float range.

    Parameters
    ----------
    minimum : None or float
        The lower bound of allowable values, inlcusive. None indicates
        no lower bound.

    maximum : None or float
        The upper bound of allowable values, inlcusive. None indicates 
        no upper bound.

    allow_exponent : bool
        Whether or not to allow exponents like '1e6' in the input.

    Returns
    -------
    results : callable
        A callable which takes a single unicode argument and returns 
        True if the text matches the range, False otherwise.

    """
    def validator(text):
        try:
            value = float(text)
        except ValueError:
            return False
        if minimum is not None and value < minimum:
            return False
        if maximum is not None and value > maximum:
            return False
        if not allow_exponent and 'e' in text.lower():
            return False
        return True
    return validator