Ho alias radianti e gradi che utilizzano galleggiante come il tipo di storage.
Quando ho conversione tra questi due unità vedo l'assemblea promuovere i valori raddoppia e poi di nuovo al galleggia quando fa le conversioni.
Q: Come posso verificare che tutte le operazioni e le conversioni di soggiorno in galleggia?
Il Mio Codice:
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); }
Dal compilatore explorer vedo le seguenti istruzioni di montaggio: https://godbolt.org/z/Gnjr54dn6
cvtss2sd - Converte una singola virgola mobile con precisione il valore della “conversione-da” fonte operando in doppia precisione in virgola mobile valore nell'operando di destinazione.
mulsd - Moltiplica il basso a doppia precisione in virgola mobile valore del secondo operando origine dal basso a doppia precisione in virgola mobile valore del primo operando di origine.
cvtsd2ss - Converte una doppia precisione in virgola mobile valore in “la conversione-da” operando origine a una singola virgola mobile con precisione il valore
PS: non sarei sorpreso se ho definito il mio alias e/o le mie funzioni di conversione in modo non corretto.