Pour plus de clarté, si j'utilise un langage qui implémente les flottants IEE 754 et que je déclare:
float f0 = 0.f;
float f1 = 1.f;
... puis réimprimez-les, j'obtiendrai 0,0000 et 1,0000 - exactement.
Mais IEEE 754 n'est pas capable de représenter tous les nombres le long de la ligne réelle. Proche de zéro, les «écarts» sont petits; à mesure que vous vous éloignez, les écarts se creusent.
Donc, ma question est: pour un float IEEE 754, quel est le premier entier (le plus proche de zéro) qui ne peut pas être représenté exactement? Je ne suis vraiment concerné que par les flottants 32 bits pour le moment, même si je serai intéressé d'entendre la réponse pour 64 bits si quelqu'un la donne!
Je pensais que ce serait aussi simple que de calculer 2 bits_of_mantissa et d'ajouter 1, où bits_of_mantissa est le nombre de bits que la norme expose. Je l'ai fait pour les flottants 32 bits sur ma machine (MSVC ++, Win64), et cela semblait bien, cependant.