"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que você não deveria usar == para comparar floats em Java?

Por que você não deveria usar == para comparar floats em Java?

Publicado em 2024-12-21
Navegar:108

Why Shouldn't You Use == to Compare Floats in Java?

Pergunta: Armadilhas do uso de == para comparação flutuante em Java

Apesar de sua presença como um operador de igualdade para números de ponto flutuante em Java , == tem limitações ao comparar valores flutuantes, conforme evidenciado por avisos de análise estática como "JAVA0078 Valores de ponto flutuante comparados com ==".

Resposta: O problema de precisão

Números de ponto flutuante são armazenados como aproximações e erros de arredondamento podem ocorrer durante as operações. Conseqüentemente, usar == para comparar dois pontos flutuantes pode gerar falsos negativos ou positivos.

A abordagem correta: margem de tolerância

A abordagem adequada para comparar pontos flutuantes para "igualdade" envolve testar se a diferença absoluta entre eles é menor que um valor de tolerância predefinido. Isso garante que a comparação considere erros de arredondamento e corresponda à precisão pretendida:

if(Math.abs(sectionID - currentSectionID) 

Epsilon Value Selection

A seleção de um valor épsilon apropriado depende da precisão desejada. Para comparações precisas, valores épsilon menores são usados, enquanto valores épsilon maiores permitem margens de erro mais amplas.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3