Оператор условного перехода case в большинстве языков программирования может работать только с целочисленным типом из соображений быстродействия. 1 Если константы, по которым осуществляется ветвление, небольшие, то можно завести массив адресов перехода, который будет индексирован значением переключателя и прыгать на нужный блок кода за небольшое количество инструкций. 1
Также ограничение на использование вещественных переменных связано с тем, что результат сравнения близких вещественных чисел на точное равенство не определён. 1 Для чисел с плавающей точкой оператор точного сравнения обычно не имеет смысла, так как они получаются из датчиков, которые дают погрешность, и математических операций, где проходят округления. 1
При этом в некоторых языках, например C#, оператор case допускает использование строк и некоторых других типов данных. 5