Digamos que você tenha uma variável do tipo ponto flutuante. 32 ou 64 bits não importa.
Você atribui o valor máximo representável à variável. Linguagens de programação tÃpicas têm uma constante para isso.
Como você determina o menor valor que deve ser adicionado à sua variável para que ela "caia" no infinito?
Conheço funções como nextafter*
e nexttoward*
em C, next_up
em Rust, etc. Elas estão relacionadas, mas não me fornecem o valor que preciso.
Aqui está uma solução para
float
em C. Ele usaFLT_ROUNDS
, que pode ser alterado durante a execução do programa. Se um programa faz isso, este código deve usar#pragma STDC FENV_ACCESS ON
para informar ao compilador que depende do ambiente de ponto flutuante.