Uso do '%'

14 respostas
N

Pessoa me surgui uma duvida no uso do operador ‘%’
Eu sei que o uso do ‘%’ nada mais é que o resto de uma divisão inteira.

Ex:
int um = 5 % 2; // 5 dividido por 2 dá 2 e tem resto 1;

Mas e no caso de cálculo desta maneira (numerador maior que o denominador)
int naosei = 1%2;

Alguem poderia me explicar o resultado desta atribuição?

14 Respostas

Marck

Opá!

1 % 2 = 1

Resto de divisões só funcionam com números inteiros.

Explicando melhor: 1 / 2 = 0 e sobra 1.

N

humm… vlw
entendii…
mas nesse caso o resrultado seria de : 0,5

o java arrendonda pra 1 números com casa maiores ou iguais a 5?

e se fosse um resultado de 0,4? o Java arrendonda pra 0 ?

T

15 % 9 = 6

(Note que 15.0 / 9.0 = 1,666666666… que é maior que 0,5, e mesmo assim 15 / 9 é 1. )

Não há “arredondamento” envolvido aí.
É simplesmente uma divisão inteira com resto inteiro, daquelas que se ensinavam a fazer à mão antigamente.

ViniGodoy

Não é 0,5.

Como o colega já disse, o resultado de 1/2 é 0. 0x1=0
E sobra 1.

0,5 seria se a divisão fosse com ponto flutuante, que esse operador não faz.

Essa propriedade é útil para criar um contador circular. Considere:
i = i % 10;

É um contador que conta de 0 até 9, e depois volta para o 0.

T

Uma coisa que reparei é que hoje em dia as pessoas têm dificuldade imensa para entender uma divisão inteira.
Dá a impressão que a calculadora substituiu a capacidade de fazer contas; portanto, explicar o que é uma divisão inteira (ainda ensinam a fazer isso na escola ? ) é tarefa sobre-humana.
Por isso, fico às vezes maravilhado com algumas pessoas que conseguem fazer contas de cabeça e dar o troco corretamente sem usar uma calculadora; esse tipo de pessoas era muito comum antigamente, mas hoje é bem difícil encontrá-las. (Não estou me referindo àqueles orientais que têm um ábaco (ou “soroban” ) na cabeça, estou falando de gente como a gente).

Marky.Vasconcelos

Sabendo disso que desde o primario evitei usar calculadoras para resolver contas.

N

Bom gente… Obrigado pela ajuda… essa questão ficou meio confusa pra mim mesmo…

mas agora entendi… tem que desprezar casas ao fazer a conta

EX:

1/2 = 0 resto 1 , Então: 1%2 = 1
15/9 = 1 resto 6, Então: 15%9 = 6

vlw pela atenção de todos!

S

Desprezar casas???

Considere que divisão de inteiro por inteiro sempre vai dar um resultado inteiro independente de vc fazer essa conta em uma variavel double.

Como a variavel que armazena o 1 / 2 é inteira e os números são inteiro entao ele so mostra a parte inteira da conta (a parte decimal é simplesmente cortada e não arredondada).

No caso do % ele só mostra o resto da divisão mesmo.

T

Sei, sei… você consegue extrair uma raiz quadrada usando só lápis e papel? Digamos, a raiz quadrada (inteira, é claro; não quero nenhuma casa depois da vírgula) de 21462 ?

ViniGodoy

Bom, ele disse que evitou, não que nunca usou, hheheheh.

Mas vai saber se ele não é filho do Rain Man.

T

Ou se o Mark tem um ábaco na cabeça …

Marky.Vasconcelos

Calma… eu só disse que evitei. Me senti inutil agora. :frowning:

Mas de qualquer forma vemos no colegial muitas pessoas resolvendo contas de multiplicação/divisão/adição/subtração na calculadora pela dificuldade com numeros. Para essas operações nunca precisei e para algumas coisas mais complexas também. E hoje em dia na faculdade vejo pessoas com os mesmos problemas, problemas que não tenho por não ter esse costume.

T

Não fique triste… não é bom quando você pode dividir a conta no restaurante sem precisar de puxar uma calculadora?

Marky.Vasconcelos

:smiley: Isso sim. :smiley:
Exemplo que já até aconteceu. ^^

Criado 6 de julho de 2009
Ultima resposta 6 de jul. de 2009
Respostas 14
Participantes 6