Часто мы используем микроконтроллеры, чтобы делать что-то в наших роботах, но нужно сделать некоторые вычисления в десятичном виде. Использование переменных с плавающей запятой очень медленное, потому что автоматически включается программная библиотека с плавающей запятой (если у вас нет высокопроизводительного микроконтроллера). Поэтому мы обычно используем арифметику с фиксированной точкой.
Всякий раз, когда я делаю это, я просто использую целое число и помню, где находится десятичное число. Однако необходимо позаботиться о том, чтобы все было согласованно, особенно когда в расчетах используются переменные, в которых десятичная точка находится в другом месте.
Я реализовал функцию atan2 с фиксированной точкой, но, поскольку я пытался сжать каждую последнюю каплю с ограниченной точностью (16 бит), я часто менял определение определения десятичной точки, и она менялась при настройке. Кроме того, у меня были бы некоторые константы, такие как квази-справочная таблица, у которых где-то есть подразумеваемая десятичная точка.
Я хочу знать, есть ли лучший способ. Существует ли библиотека или набор макросов, которые могут упростить использование переменных с фиксированной запятой, упростить умножение и деление между смешанными переменными и разрешить объявление десятичных чисел или константных выражений, но автоматически конвертировать в требуемое представление с фиксированной запятой при компиляции время?