Float.POSITIVE_INFINITY возвращает число с плавающей запятой, а Double.POSITIVE_INFINITY возвращает значение double.
Нет метода с именем Math.max (float, double).
только Math.max (float, float) и Math.max (double, double)
Поэтому, когда метод называется Math.max (float, double), он преобразует аргумент float в double, и поэтому Math.max (double, double) вызывается так, что Double.POSITIVE_INFINITY возвращается.
Java не конвертирует из двойного в плавающее, поскольку это может привести к проблеме точности.