J'ai des alias pour les radians et les degrés que d'utiliser float comme type de stockage.
Quand je convertir entre ces deux unités, je vois l'assemblée promouvoir les valeurs de doubles et puis retour à flotteurs quand faire des conversions.
Q: Comment puis-je m'assurer que toutes les opérations et les conversions de rester dans la flotte?
Mon Code:
using radians_f = boost::units::quantity<boost::units::si::plane_angle, float>;
using degrees_f = boost::units::quantity<boost::units::degree::plane_angle, float>;
degrees_f to_degrees(const radians_f& angle) { return static_cast<degrees_f>(angle); }
radians_f to_radians(const degrees_f& angle) { return static_cast<radians_f>(angle); }
De compilateur explorer je vois la suite des instructions de montage: https://godbolt.org/z/Gnjr54dn6
cvtss2sd - Convertit un simple précision à virgule flottante valeur dans le “convertir-de la” source de l'opérande de double précision en virgule flottante valeur de l'opérande de destination.
mulsd - Multiplie le bas de double précision en virgule flottante valeur dans le deuxième opérande source, par le faible double précision en virgule flottante valeur dans le premier opérande source.
cvtsd2ss - Convertit un double-precision floating-point de la valeur dans le “convertir-de la” source de l'opérande de simple précision à virgule flottante valeur
PS: je ne serais pas surpris si j'ai défini mon alias ou/et de mes fonctions de conversion de manière incorrecte.