def float_percent(percent, min_percent=-100, max_percent=100):
    """Converts a whole percentage (100, 50) to a floating point percentage (1, 0.5).

    Adds validation to make sure that the percent is always between min and max.

    :param percent: The percentage to convert
    :type percent: int, float
    :param min_percent: Minimum percentage to accept, defaults to -100
    :type min_percent: int, float, optional
    :param max_percent: Maximum percentage to accept, defaults to 100
    :type max_percent: int, float, optional
    :return: The floating point percentage between the min and max
    :rtype: int, float
    """
    if min_percent > max_percent:
        temp_percent = min_percent
        min_percent = max_percent
        max_percent = temp_percent
    elif min_percent == max_percent:
        return min_percent
    if percent is None or not isinstance(percent, (int, float)):
        if min_percent <= 0 and max_percent >= 0:
            return 0
        return (min_percent + max_percent) / 2
    if percent > max_percent:
        percent = max_percent
    elif percent < min_percent:
        percent = min_percent
    return percent / 100
