Me gustaría tener el número más cercano por debajo de 1.0 como punto flotante. Al leer el artículo de wikipedia en IEEE-745, he logrado averiguar que la representación binaria para 1.0 es 3FF0000000000000
, por lo que el valor doble más cercano es en realidad 0x3FEFFFFFFFFFFFFF
.define constante doble como hexadecimal?
La única manera que conozco para inicializar un doble con estos datos binarios es la siguiente:
double a;
*((unsigned*)(&a) + 1) = 0x3FEFFFFF;
*((unsigned*)(&a) + 0) = 0xFFFFFFFF;
que es bastante complicado de usar.
¿Hay alguna manera mejor de definir este número doble, si es posible como una constante?
¿Puedo preguntar por qué es necesario esto? –
la única manera es esta ... a menos que su implementación en C++ tenga 64 bits de soporte entero. –
Esto es simplemente quisquilloso, pero es IEEE-754-1985 (no IEEE-745). – George