Если в Вашем случае, по какой-то причине нужно воспринимать 1.0 как float, 1. Передавайте числа в JSON как строки 2. после всех проверок проверяйте, что в строке есть точка
Так я же написал, что проверить вконце. Сначала проверяете, что строка это число, потом что число это integer, потом дополнительно наличие точки в оригинальной строке
Проблема высосана из пальца. Вот у меня есть кейс где явно передается null и очень удобно проверять на undefined. Даже не представляю как бы пришлось извращаться если бы не такая возможность.
Больше выглядит как надуманная проблема чем реальная. У каждого проекта есть свои утилитные фунции, ну дописать туда функцию однострочку не сложно, если есть частая необходимость делать подобные проверки.
Если Вы пришли их другого яп, то трудно не сравнивать с ним js и должен пройти майндшифтинг. Но чем раньше Вы перестанете сравнивать js через призму другого япа, тем проще Вам будет писать на нем качественный и надежный код. Мб даже удовольствие начнете получать