Dla jasności, jeśli używam języka, który implementuje zmiennoprzecinkowe IEE 754 i oświadczam:
float f0 = 0.f;
float f1 = 1.f;
... a następnie wydrukuj je z powrotem, otrzymam 0,0000 i 1,0000 - dokładnie.
Ale IEEE 754 nie jest w stanie przedstawić wszystkich liczb wzdłuż rzeczywistej linii. Bliskie zeru „luki” są małe; w miarę oddalania się odstępy się powiększają.
Więc moje pytanie brzmi: dla float IEEE 754, która jest pierwszą (najbliższą zeru) liczbą całkowitą, której nie można dokładnie przedstawić? Na razie jestem naprawdę zainteresowany tylko 32-bitowymi floatami, chociaż będę zainteresowany usłyszeniem odpowiedzi na 64-bitowe, jeśli ktoś ją poda!
Pomyślałem, że będzie to tak proste, jak obliczenie 2 bitów_mantissy i dodanie 1, gdzie bity_mantysy to liczba bitów ujawnionych przez standard. Zrobiłem to dla 32-bitowych pływaków na moim komputerze (MSVC ++, Win64) i wydawało się jednak w porządku.