adrivb
Outubro 29, 2010, 2:42pm
#1
Pessoal,
estou tentando pegar o resto da expressão (-1/26), se colocarem no google “-1 % 26=” verão que o resultado correto é 25
mas no java ele me retorna -1
-5%26 retorna -5
-7%26 retorna -7
o que estou fazendo de errado?
o resto tem que ser um numero inteiro positivo
int a;
a = (-1 % 26);
out.println(a);
Você não está fazendo nada errado. É que a definição de resto para o Java é diferente da definição matemática.
Para ter algo como a definição matemática, use algo como:
se a % b for negativo, e se b for positivo, então use para o valor do resto b + a % b
Por exemplo, se deu -1 para (-1 % 26), então some 26 e vai dar 25, que é o que você espera.
adrivb
Outubro 29, 2010, 3:18pm
#3
beleza, funcionou direitinho
Na verdade, o resto da divisão de -1 por 26 é mesmo -1.
-1 / 26 = 0, resto -1.
Você até pode tirar a prova real:
26x0 = 0 + (-1) = -1.
Da mesma forma para os números que você citou. Basta usar a lógica.
Você está dizendo que tem -1 unidade, e ao dividir esse número por 26 pessoas, acabam sobrando 25 unidades?
Aliás, a definição de módulo do java é a de resto, de acordo a especificação. Ela é até baseada na prova real que comentei, onde (a/b)*b+(a%b) = a:
http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#24956