если взять 8 байт лонг - макс значение 18446744073709551615 - 64 бита, в double у тебя значащих бит 52 то есть макс значение 524503599627370496. если у тебя динамический диапазон твоей величины небольшой- например для частоты это будет условно 40000 - тогда ты можешь домножить на 18446744073709551615/40000 все значения растянув весь диапазон значений на 64 бита и в операциях использовать все доступные биты, а в double только на 52. пример : 40000/32768 = 461 168 601 842 738 * 40000/(32768 * 461 168 601 842 738) , для внутренних операций делить обратно на множитель не требуется - приводить к единицам измерения нужно только при индикации, так что у тебя делится 461 168 601 842 738 * 40000/32768 - это деление будет точнее чем 13 112 589 990 684 * 40000/32768 для double. (edited) но если ты не растягиваешь до макс значения double- у тебя еще меньше будет точность поправил числа-мог запутать чуток
условно говоря операции делаешь не в герцах а в наногерцах если тип позволяет на пальцах вот ему расписал в слаке)
на самом деле ты правильно сказал - нужно просто знать что такое плавающая точка и фиксированная и как в каждой делаются операции математические и для чего подходит одна и другая