Oft verwenden wir Mikrocontroller, um Dinge in unseren Robotern zu erledigen, müssen aber einige Berechnungen in Dezimalzahlen durchführen. Die Verwendung von Gleitkommavariablen ist sehr langsam, da automatisch eine Software-Gleitkomma-Bibliothek enthalten ist (es sei denn, Sie haben einen High-End-Mikrocontroller). Daher verwenden wir im Allgemeinen eine Festkomma-Arithmetik.
Immer wenn ich das mache, verwende ich einfach eine ganze Zahl und erinnere mich, wo die Dezimalstelle ist. Es muss jedoch sorgfältig darauf geachtet werden, dass alles konsistent ist, insbesondere wenn Berechnungen Variablen beinhalten, bei denen sich der Dezimalpunkt an einer anderen Stelle befindet.
Ich habe eine Festpunkt-atan2-Funktion implementiert, aber da ich versucht habe, jeden letzten Tropfen mit begrenzter Genauigkeit (16 Bit) zu komprimieren, habe ich häufig die Definition des Dezimalpunkts geändert und sie hat sich geändert, als ich sie optimiert habe. Außerdem hätte ich einige Konstanten als Quasi-Nachschlagetabelle, die selbst irgendwo einen impliziten Dezimalpunkt haben.
Ich möchte wissen, ob es einen besseren Weg gibt. Gibt es eine Bibliothek oder einen Satz von Makros, die die Verwendung von Festkommavariablen vereinfachen, die Multiplikation und Division zwischen gemischten Variablen vereinfachen und die Deklaration von Dezimalzahlen oder konstanten Ausdrücken ermöglichen, aber beim Kompilieren automatisch in die gewünschte Festkommadarstellung konvertieren können? Zeit?