olá pessoal!
estou fazendo um trabalho, e escrevi a seguinte linha: int indiceAtual = (int)(lista[i]*lista.length/(k+1));
onde:
i <= 50000
a lista tem tamanho 50000
k <= 50000
acontece que dependendo dos valores, alguns resultados dão negativos, sendo que é impossivel tal conta dá negativa.
imaginei que fosse porque eu usei int, tentei usar long, e até double, mas continuou dando negativos
alguem pode me explicar direitinho? eu preciso de numeros inteiros. que é pra eles serem posições de um vetor.
obrigado pessoal!
O valor de lista[i] nunca é negativo? Tem certeza?
Põe um breakpoint na linha do código e inspeciona o valor das variáveis!
lista[i]*lista.length
Gostaria de saber:
O tipo de lista[]
Se lista[] for int[] e um dos elementos for maior que 2147483647 / 50000 = 42949, o resultado será um valor que excederá o maior inteiro positivo (2147483647) e aparece como um número negativo.
O correto, nesse caso, é fazer as contas ou assim:
(int) ((long) lista[i]) * lista.length / (k + 1)
ou então assim:
(int) (((double) lista[i]) * lista.length / (k + 1))