Sobes.tech
Middle
249

Como compararia dois números de ponto flutuante (float) por igualdade?

Resposta da IA

sobes.tech IA

Não é recomendado comparar números de ponto flutuante para igualdade estrita (==) devido às características da sua representação interna e possíveis erros de arredondamento. Em vez disso, usa-se uma comparação com tolerância (epsilon):

#include <cmath> // Para std::fabs

bool sao_iguais_float(float a, float b, float epsilon = 0.00001f) {
    // Compara a diferença absoluta dos números com a tolerância dada
    return std::fabs(a - b) < epsilon;
}

// Exemplo de uso:
// float x = 0.1f + 0.2f;
// float y = 0.3f;
// if (sao_iguais_float(x, y)) {
//     // Os números são considerados iguais
// }

A escolha do valor epsilon depende dos requisitos específicos de precisão.