Usando Short ou Byte

7 respostas
N

Prezados, fiz um teste para exibir o resultado com diversas variaveis tipo.

int a = 10;

int b = 3;

int resultados;

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

7 Respostas

muldon

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).

public class divisao {

public static void main(String args[]) {

int a = 10;

int b = 3;

int resultados;
resultados = (int)(a/b);
    System.out.println(resultados);
}

}

rezendefabio

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

Só para você ficar sabendo.

Quando você combina dois operandos com os operadores +, -, * ou /, o resultado é int, long ou double.

  1. Será int se nenhum dos operandos for long ou double.
  2. Será long se nenhum dos operandos for double, e pelo menos um deles for long.
  3. 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

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.

int a = 10;

int b = 3;

int resultados;

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…

}
byte a = 10;
byte b = 2;
byte resultado;

resuldado = (byte) a/b;

Syste.out.printf(resultado);
}
// ou assim
byte a = 10;
byte b = 2;
byte resultado = 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…

ainda ficou uma duvida mas espero ter ajudado…

Falow…
abraço…

Criado 1 de setembro de 2006
Ultima resposta 1 de set. de 2006
Respostas 7
Participantes 6