Prezados, fiz um teste para exibir o resultado com diversas variaveis tipo.
inta=10;intb=3;intresultados;
resultados = a/b;
System.out.println(resultados);
Funcionou normalmente, porém quando testei a mesma estrutura com short e byte, ocorreu o erro “possible loss of precision”. Se possível gostaria de saber porque.
nroncatti , mostre o seu codigo com o byte e o short por favor.
Cabral
Cara, tenta mudar sua variavel resultados para float ou double, ele da essa perca de precisão por que o resultado da conta pode ser um número quebrado
Ricardo Cabral
rezendefabio
O que ocorre eh o seguinte, vc ta tentando armazenar um resultado que vai dar double (64 bits) - ponto flutuante, numa variavel int (32 bits) - inteira. Dai da perda de precisao. Ou vc declara a variavel resultados como double, ou faz um cast para int (que no caso vai ignorar o resto da divisao).
Ops, acho q nao respondi sua pergunta. Se quiser dar o resultado com byte ou short, faz o cast para a que desejar.
byte resultados;
resultados = (byte)(a/b);
ou
short resultados;
resultados = (short)(a/b);
T
thingol
Só para você ficar sabendo.
Quando você combina dois operandos com os operadores +, -, * ou /, o resultado é int, long ou double.
Será int se nenhum dos operandos for long ou double.
Será long se nenhum dos operandos for double, e pelo menos um deles for long.
Será double se pelo menos um dos operandos for float ou double.
No seu caso, você tem dois operandos short, então vale a regra 1 - nenhum dos operandos é long ou double, portanto o resultado é int. Quando você quer atribuir um int a um short, vai ter o erro (Possible loss of precision) e então você é obrigado a efetuar um cast para short.
N
nroncatti
Prezados, valeu pela força, agora eu entendi porque somente não rodava o teste com short ou byte.
Abraços,
Nelson Roncatti
Filipe_Cruz
nroncatti:
Prezados, fiz um teste para exibir o resultado com diversas variaveis tipo.
inta=10;intb=3;intresultados;
resultados = a/b;
System.out.println(resultados);
Funcionou normalmente, porém quando testei a mesma estrutura com short e byte, ocorreu o erro “possible loss of precision”. Se possível gostaria de saber porque.
Abraço,
Nelson
Olá tudo bm…
}bytea=10;byteb=2;byteresultado;resuldado=(byte)a/b;Syste.out.printf(resultado);}// ou assimbytea=10;byteb=2;byteresultado=a/b;Syste.out.printf(resultado);}
agora eu ainda ñ sei por q tem que declarar operadores unarios em variaves que jah foram declaradas corretamente… isso tambm ocorre com o tipo short…