Je voudrais avoir le nombre le plus proche en dessous de 1,0 en tant que virgule flottante. En lisant l'article de wikipedia sur IEEE-745 j'ai réussi à découvrir que la représentation binaire pour 1.0 est 3FF0000000000000
, ainsi la double valeur la plus proche est réellement 0x3FEFFFFFFFFFFFFF
.définit la constante double comme hexadécimale?
La seule façon que je connaisse pour initialiser un double avec ces données binaires est la suivante:
double a;
*((unsigned*)(&a) + 1) = 0x3FEFFFFF;
*((unsigned*)(&a) + 0) = 0xFFFFFFFF;
Ce qui est assez lourd à utiliser.
Existe-t-il une meilleure façon de définir ce double nombre, si possible en tant que constante?
Puis-je vous demander pourquoi vous besoin? –
la seule manière est ceci ... à moins que votre implémentation de C++ ait le support d'entier de 64 bits. –
Ceci est juste nitpicking, mais il est IEEE-754-1985 (pas IEEE-745). – George