steaxlex 0 Posted May 12, 2020 Report Share Posted May 12, 2020 Boa tarde. Sou iniciante na programação (só sei linguagens) e em um dos exercicios que estava a fazer surgiu uma dúvida por causa de algo que já li. O exercicio é o seguinte: Citação bool a; int b; double c; a = true; b = 2; c = -3.5; a = b - a; c = c + b + a; b = (int) c; O resultado que me deu é 0.5 (no papel), mas como é pedido um número inteiro, 0.5 é igual a 0 ou a 1? Pergunto porgue se é um número inteiro terá de ser "arredondado", certo? 0.5 é arredondado para cima ou para baixo? Penso que será igual a 0, mas não tenho a certeza, apesar de fazer o "cout" no codeblocks e dar 0, sem qualquer erro. Pergunta básica, mas que para mim é de ajuda. Obrigado desde já. Steaxlex Link to post Share on other sites
Solution antseq 83 Posted May 12, 2020 Solution Report Share Posted May 12, 2020 5 horas atrás, steaxlex disse: O resultado que me deu é 0.5 (no papel), mas como é pedido um número inteiro, 0.5 é igual a 0 ou a 1? Pergunto porgue se é um número inteiro terá de ser "arredondado", certo? 0.5 é arredondado para cima ou para baixo? Penso que será igual a 0, mas não tenho a certeza, apesar de fazer o "cout" no codeblocks e dar 0, sem qualquer erro. Pergunta básica, mas que para mim é de ajuda. o valor de c = -0.5 .... e o "cast" para (int) transforma em 0 que é o resultado final. do que entendo, o "cast" para (int) dará sempre a parte inteira, sem qualquer aproximação (floor ou ceil) ou arredondamento (round): int main() { cout<<"(int) -0.9 = "<< (int) (-0.9f) << "\n"; cout<<"(int) -0.5 = "<< (int) (-0.5f) << "\n"; cout<<"(int) -0.3 = "<< (int) (-0.3f) << "\n"; cout<<"(int) +0.3 = "<< (int) (0.3f) << "\n"; cout<<"(int) +0.5 = "<< (int) (0.5f) << "\n"; cout<<"(int) +0.9 = "<< (int) (0.9f) << "\n"; cout<<"\n"; cout<<"(int) -1.9 = "<< (int) (-1.9f) << "\n"; cout<<"(int) -1.5 = "<< (int) (-1.5f) << "\n"; cout<<"(int) -1.3 = "<< (int) (-1.3f) << "\n"; cout<<"(int) +1.3 = "<< (int) (1.3f) << "\n"; cout<<"(int) +1.5 = "<< (int) (1.5f) << "\n"; cout<<"(int) +1.9 = "<< (int) (1.9f) << "\n"; return 0; } output: (int) -0.9 = 0 (int) -0.5 = 0 (int) -0.3 = 0 (int) +0.3 = 0 (int) +0.5 = 0 (int) +0.9 = 0 (int) -1.9 = -1 (int) -1.5 = -1 (int) -1.3 = -1 (int) +1.3 = 1 (int) +1.5 = 1 (int) +1.9 = 1 1 Report Link to post Share on other sites
steaxlex 0 Posted May 12, 2020 Author Report Share Posted May 12, 2020 27 minutos atrás, antseq disse: o "cast" para (int) dará sempre a parte inteira, sem qualquer aproximação (floor ou ceil) ou arredondamento (round): Sim, não interpretei o (int) devidamente. Muito obrigado pelo esclarecimento. Steaxlex Link to post Share on other sites
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