System.out.println(20/100); // NÃO funciona

4 respostas
P

dentro de um main qualquer…

System.out.println(20*0.01); // funciona… output = 0.2

System.out.println(20/100); // NÃO funciona… output = 0.0

alguém sabe pq diabos isso acontece?

vlw
abs

4 Respostas

B

Ola,

Simples, pelas regras de conversão de tipos do java, o 20/100 é inteiro, e o resultado é menor que 1 e maior que 0, porem mais 0 que 1, então o retorno é 1… mas acho que se vc quizer o resultado real desta divisão tera que fazer assim:

System.out.print(20.0/100.0);
J

Só uma pequeninissima correção ao que o Bruno falou, o resultado é 0 porque uma operação entre 2 inteiros resulta em um inteiro, a parte inteira do numero, nesse caso a parte inteira é 0…

Se você fizer por exemplo:

System.out.println(25/10);

imprime 2, pois o resultado é 2.5, mas como o resultado tem que ser inteiro, o 5 vai pro espaço…

Se você escrever como o Bruno colocou aí, vai imprimir o valor correto, ou simplemente colocar um D na frente de um dos numeros:

System.out.println(20/100.0); System.out.println(20/100D);

P

valeu! Não sabia desta definição já q acredito q na maioria das linguagens funciona.

coloquei 20/100.0 e funcionou tb… é q no caso o dividendo vem como argumento e divido por 100.0 por se tratar de uma porcentagem.

obrigado :slight_smile:

S

Quando o java vai realizar alguma conta… ele joga os numeros para a “caixa” melhor para se trabalhar…
quando vc colocou 20/100 tinha somente int ai ele passou para int mesmo ou long para realizar essa conta…
quando vc colocou 20/100.0 o numero 100.0 é float… assim foi colocado na “caixa” dos float é por isso que a conta funciona com o 20/100.0 e n com 20/100!!!

Criado 6 de julho de 2006
Ultima resposta 6 de jul. de 2006
Respostas 4
Participantes 4