Per chiarezza, se sto usando un linguaggio che implementa IEE 754 float e dichiaro:
float f0 = 0.f;
float f1 = 1.f;
... e poi stampandoli indietro, riceverò 0,0000 e 1,0000 - esattamente.
Ma IEEE 754 non è in grado di rappresentare tutti i numeri lungo la linea reale. Vicino a zero, gli "spazi vuoti" sono piccoli; man mano che ci si allontana, le lacune si allargano.
Quindi, la mia domanda è: per un float IEEE 754, qual è il primo (più vicino a zero) intero che non può essere rappresentato esattamente? Per ora mi occupo solo dei float a 32 bit, anche se mi interesserà ascoltare la risposta a 64 bit se qualcuno lo dà!
Ho pensato che sarebbe semplice come calcolare 2 bits_of_mantissa e aggiungere 1, dove bits_of_mantissa è quanti bit espone lo standard. L'ho fatto per i float a 32 bit sulla mia macchina (MSVC ++, Win64) e, tuttavia, mi è sembrato perfetto.