Mám prezývky na radiány a stupňov, ktoré používajú float ako úložisko typu.
Keď som konverziu medzi týmito dvoma jednotkami vidím montáž podporovať hodnoty na dvojky a potom späť na plaváky, keď robí konverzie.
Q: Ako sa môžem uistiť, že všetky operácie a prevody pobyt v pláva?
Môj Kód:
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); }
Z kompilátor explorer som pozri nasledujúci návod na montáž: https://godbolt.org/z/Gnjr54dn6
cvtss2sd - Konvertuje single-precision floating-point hodnoty v "convert-z" zdrojový operand na double-precision floating-point hodnota v cieľovom operand.
mulsd - Násobí nízke double-precision floating-point hodnota v druhom zdrojový operand nízka double-precision floating-point hodnota v prvom zdrojový operand.
cvtsd2ss - Konvertuje double-precision floating-point hodnoty v "convert-z" zdrojový operand do jedného-precision floating-point hodnota
PS: ja by som nemal byť prekvapený, keď som definované moje prezývky alebo/a moje obrátenie funkcie nesprávne.