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.