Souvent, nous utilisons des microcontrôleurs pour faire des choses dans nos robots, mais nous devons faire des calculs en décimal. L'utilisation de variables à virgule flottante est très lente, car une bibliothèque logicielle de virgule flottante est automatiquement incluse (sauf si vous avez un microcontrôleur haut de gamme). Par conséquent, nous utilisons généralement l'arithmétique à virgule fixe.
Chaque fois que je fais cela, j'utilise simplement un entier et je me souviens où se trouve la décimale. Cependant, il prend un certain soin pour s'assurer que tout est cohérent, en particulier lorsque les calculs impliquent des variables où le point décimal est à un endroit différent.
J'ai implémenté une fonction atan2 à virgule fixe, mais comme j'essayais de presser chaque dernière goutte de précision limitée (16 bits), je changeais souvent la définition de l'endroit où se trouve le point décimal, et cela changerait au fur et à mesure que je le peaufinais. De plus, j'aurais certaines constantes, comme une table de quasi-recherche, qui elles-mêmes ont un point décimal implicite quelque part.
Je veux savoir s'il y a une meilleure façon. Existe-t-il une bibliothèque ou un ensemble de macros qui peuvent simplifier l'utilisation des variables à virgule fixe, facilitant la multiplication et la division entre les variables mixtes, et permettant la déclaration de nombres décimaux ou d'expressions constantes, mais convertissant automatiquement la représentation en virgule fixe souhaitée lors de la compilation temps?