Нет, в Java конструкция switch не работает напрямую с типами double или float.
Причина в том, что числа с плавающей точкой имеют неточное представление в памяти компьютера. Сравнение таких чисел на прямое равенство (==) может привести к непредсказуемым результатам из-за погрешностей.
switch требует точного совпадения значения для выбора ветки выполнения. Типы, которые поддерживаются в switch, это примитивные целочисленные типы (byte, short, char, ``int), соответствующие им обертки (Byte, Short, Character, Integer), перечисления (Enum) и тип String` (начиная с Java 7).
Для сравнения значений double или float можно использовать условные операторы if/else if/else. При этом для сравнения на равенство рекомендуется использовать заданную погрешность (epsilon).
java