Qual é o primeiro número inteiro que um flutuador IEEE 754 é incapaz de representar exatamente?

Para maior clareza, se estou usando uma linguagem que implementa flutuadores IEE 754 e declaro:

float f0 = 0.f;
float f1 = 1.f;

... e depois imprimi-los, receberei 0,0000 e 1,0000 - exatamente.

Mas o IEEE 754 não é capaz de representar todos os números ao longo da linha real. Perto de zero, as 'lacunas' são pequenas; À medida que você se afasta, as lacunas aumentam.

Então, minha pergunta é:para um flutuador IEEE 754, qual é o primeiro inteiro (mais próximo de zero) que não pode ser representado exatamente? Por enquanto, só estou realmente preocupado com carros alegóricos de 32 bits, embora esteja interessado em ouvir a resposta de 64 bits, se alguém der!

Eu pensei que isso seria tão simples quanto calcular 2bits_of_mantissa e adicionando 1, ondebits_of_mantissa é quantos bits o padrão expõe. Eu fiz isso para carros alegóricos de 32 bits na minha máquina (MSVC ++, Win64), e parecia bom.

questionAnswers(2)

yourAnswerToTheQuestion