def calculate_and_print(numerator: int, denominator: int, name: str) -> float:
        """
        Computes and prints the rates based on the denominator provided.

        :param numerator: number used to compute the rate.
        :param denominator: number used to compute the rate.
        :param name: Rate name being computed e.g., false-positive rate.
        :return: Computed rate
        """
        try:
            res = 100 * (numerator / float(denominator))
            logger.debug("%s: %d/%d=%.3g", name, numerator, denominator, res)
            return res
        except ZeroDivisionError:
            logger.debug("%s: couldn't calculate %d/%d", name, numerator, denominator)
            return 0.0

        Computes and prints the rates based on the denominator provided.

        :param numerator: number used to compute the rate.
        :param denominator: number used to compute the rate.
        :param name: Rate name being computed e.g., false-positive rate.
        :return: Computed rate
        
art/defences/detector/poison/ground_truth_evaluator.py