Estava eu aqui praticando e fazendo os exercícios do curso de java básico quando me deparei com a seguinte situação: declarei duas variáveis do tipo double,
val1 = 100 / 3;
val2 = 3 /100;
System.out.printl(“Total val1 ” + val1);
System.out.printl(“Total val1 ” + val2);
33
00
E nas duas situações aparece um valor errado…se eu declarar as variáveis como float ou como double fica errado do mesmo jeito….alguem pode me esclarecer porque isso ocorre?
muito obrigado
Emerson
A expressão 100 / 3 produz um resultado do tipo int.
Experimente:
double x = 100f / 3;
3 curtidas
Em Java, toda divisão por int, resulta em um resultado inteiro, mesmo que a variável que recebe o valor seja float ou double.
Para resolver, faça com que o divisor seja float ou double.
Olá, como já explicado pelo @staroski, divisões de inteiros retornam resultados inteiros, por exemplo, se o resultado de uma divisão fosse 5.999… o Java retornaria somente a parte inteira, que é 5 e descartaria a parte decimal.
Para complementar ainda mais a resposta eu fiz um código referente ao seu pequeno problema.
float val1 = 100;
float val2 = 3;
float r1 = val1 / val2;
float r2 = val2 / val1;
System.out.printf("Valor de val1 é: %.2f \n", r1); // Imprime o valor de val1 formata com 2 casas decimais (%.2f) e quebra a linha (\n)
System.out.printf("Valor de val2 é: %.2f \n", r2); // Imprime o valor de val2 e formata com 2 casas decimais (%.2f) e quebra a linhda (\n)
Também sou iniciante no Java, mas espero ter ajudado, e pros mais experientes que lerem meu código, aceito dicas para melhorar ele, será sempre muito bem vinda.
Douglas muito obrigado pela ajuda.
1 curtida
muito obrigado pela dica staroski.