Fallos del tipo CWE-1077
6 resultadosComparação de números de ponto flutuante com operador incorreto
Ocorre quando o código usa operadores de comparação exatos (== ou !=) para validar ou tomar decisões sobre números em ponto flutuante, ignorando erros de representação e arredondamento inerentes ao formato IEEE 754. Isso leva a comportamentos imprevíveis e falhas em lógica de segurança, como autenticação ou validação de limites.
Um sistema de detecção de anomalias valida se um valor de temperatura lido de um sensor é exatamente igual a um threshold crítico usando `if (temp == 100.0)`. Devido a erros de arredondamento em cálculos intermediários, a comparação falha mesmo quando a temperatura está dentro do intervalo perigoso, contornando o alarme de segurança.
Use comparações com margem de erro (epsilon): `if (abs(temp - 100.0) < EPSILON)` em vez de igualdade exata. Para lógica crítica, considere usar tipos de dados decimais ou inteiros (multiplique por escala fixa) em vez de floats, evitando ambiguidade numérica.