Mi piacerebbe avere il numero più vicino sotto 1.0 come un punto in virgola mobile. Leggendo l'articolo di wikipedia su IEEE-745 sono riuscito a scoprire che la rappresentazione binaria per 1.0 è 3FF0000000000000
, quindi il doppio valore più vicino è in realtà 0x3FEFFFFFFFFFFFFF
.definisce la doppia costante come esadecimale?
L'unico modo che conosco per inizializzare una doppia con questi dati binari è questo:
double a;
*((unsigned*)(&a) + 1) = 0x3FEFFFFF;
*((unsigned*)(&a) + 0) = 0xFFFFFFFF;
che è piuttosto ingombrante da usare.
C'è un modo migliore per definire questo doppio numero, se possibile come costante?
Posso chiedere perché avete bisogno di questo? –
l'unico modo è questo ... a meno che l'implementazione del C++ non abbia il supporto intero a 64 bit. –
Questo è solo nitpicking, ma è IEEE-754-1985 (non IEEE-745). – George