aafd Posted February 1, 2020 at 05:42 PM Report Share #617249 Posted February 1, 2020 at 05:42 PM olá, preciso de ajuda. Não estou a conseguir entrar no condicional "if" com um número flutuante obtido após uma operação. No código abaixo quando declaro o valor 0.05 entra no "if", mas quando faço a obtenção do 0.05 através de uma subtração de dois float não entra no "if" e preciso de operar valores para resolver o meu exercício. #include<iostream> using namespace std; int main(){ float v1=2; float v2=1.95; float diferenca = v1-v2; cout << diferenca << endl; if (diferenca == 0.05){ cout << "entrou"<< endl; // NAO ESTA A ENTRAR ! } } Link to comment Share on other sites More sharing options...
Rui Carlos Posted February 1, 2020 at 06:11 PM Report Share #617250 Posted February 1, 2020 at 06:11 PM Não deves comparar floats directamente, devido a possíveis erros de arredondamento. Para casos simples, podes usar algo com abs(x - y) < epsilon, onde epsilon define um erro que aceitas na diferença entre os valores. Contudo, regra geral precisas de uma lógica mais complexa para se adaptar à escala dos valores a serem comparados. Podes ler mais sobre o assunto, por exemplo, aqui: http://realtimecollisiondetection.net/blog/?p=89 Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now