En C++, ¿cuál es la forma genérica de convertir cualquier valor de coma flotante (flotante) a fixed point (int, 16:16 o 24: 8)?Conversión de punto flotante a punto fijo
EDIT: Para aclarar, los valores de punto fijo tienen dos partes: una parte entera y una parte fraccionaria. La parte entera se puede representar mediante un tipo de datos entero con signo o sin signo. La parte fraccionaria se representa mediante un tipo de datos entero de datos sin signo.
Hagamos una analogía con el dinero en aras de la claridad. La parte fraccionaria puede representar centavos, una parte fraccionaria de un dólar. El rango del tipo de datos 'centavos' sería de 0 a 99. Si se utilizara un entero sin signo de 8 bits para matemática de punto fijo, entonces la parte fraccional se dividiría en 256 partes divisibles uniformemente.
Espero que aclare las cosas.
Si está en Visual C++, experimente con el interruptor '/ fp: fast' incluso antes de pensar en refactorizar todo su punto flotante a punto fijo. Este conmutador de modelo de coma flotante permite optimizaciones que pueden permitir que el punto flotante supere fácilmente el punto fijo de velocidad. Definitivamente una característica poco apreciada. –