Dor de Cabeça! Por que sempre o Dividendo?

7 respostas
W

Boa noite pessoal…
Sou novo com Java, e hj estava testando alguns calculos de rotina ( adição, subtração, divisão), e justamente o ultimo que
ta me dando dor de cabeça. A duvida é o seguinte: Toda vez que tento retornar o resto da divisão em um calculo onde o
Divisor é maior que o Dividendo sempre o resultado é o proprio Dividendo. Ex.: 4 % 40 = 4;
Me ajudem!

7 Respostas

Roger75

Retorna 4 porque a resposta é essa mesmo.

Se dividir 4 por 40 dá 0 e sobra 4, pois 0*40+4=4
4 % 40 indica que você quer o resto da divisão de 4 por 40.

W

Roger75:
Retorna 4 porque a resposta é essa mesmo.

Se dividir 4 por 40 dá 0 e sobra 4, pois 0*40+4=4
4 % 40 indica que você quer o resto da divisão de 4 por 40.

Boa Noite Roger…
Cara ainda ñ entendi sua logica. Pois se 4 / 40 = 0,1 como quociente e 0 como resto;
Como pode dar 4 de resto?

Roger75

winderfaik:
Roger75:
Retorna 4 porque a resposta é essa mesmo.

Se dividir 4 por 40 dá 0 e sobra 4, pois 0*40+4=4
4 % 40 indica que você quer o resto da divisão de 4 por 40.

Boa Noite Roger…
Cara ainda ñ entendi sua logica. Pois se 4 / 40 = 0,1 como quociente e 0 como resto;
Como pode dar 4 de resto?

Essa operação (%, ou mod) é feita com números inteiros. O resultado tem que ser inteiro, bem como o resto da divisão…

Dieval_Guizelini

Uma outra forma de pensar…

Pegue a parte fracionária e multiplique pelo denominador…

Ex:

4 / 40 = 0,1
logo o resto é
0,1 * 40 = 4.

Se fosse 48 / 40 = 1,2, certo?
pegue a parte fracionário (que é o resto) e multiplique pelo denominador:
0,2 * 40 = 8

Bom na teoria é legal, mas se tentar trabalhar com número de ponto flutuante em Java, você deverá compreender melhor o conceito de mantissa e o padrão IEEE 754.

Especificação do Java: http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html

fw

ViniGodoy

É bom entender o padrão para não se surpreender com programas como esse aqui:

float x = 7.9f;
float y = 3;
float z = 1700000;

float result1 =  (x/y) * z;
float result2 =  (x*z) / y;

System.out.println("Resultado 1: " + result1);
System.out.println("Resultado 2: " + result2);
fredferrao
ViniGodoy:
É bom entender o padrão para não se surpreender com programas como esse aqui:
float x = 7.9f;
float y = 3;
float z = 1700000;

float result1 =  (x/y) * z;
float result2 =  (x*z) / y;

System.out.println("Resultado 1: " + result1);
System.out.println("Resultado 2: " + result2);

E qual seria o padrao?? Em um deles a dizima para primeiro que no outro? multiplicacao x divisao?? Ou isso ta mais pra matematica?

float x = 7.9f;
        float y = 3;
        float z = 1700000;

        float result1 = (x / y) * z;
        float result2 = (x * z) / y;

        System.out.println("Resultado 1: " + result1);
        System.out.println("Resultado 2: " + result2);

        BigDecimal xB = new BigDecimal(7.9f);
        BigDecimal yB = new BigDecimal(3);
        BigDecimal zB = new BigDecimal(1700000);

        BigDecimal result1B = xB.divide(yB, 200, RoundingMode.DOWN).multiply(zB);
        BigDecimal result2B = xB.multiply(zB).divide(yB, 200, RoundingMode.DOWN);

        System.out.println("Resultado 1 Big: " + result1B);
        System.out.println("Resultado 2 Big: " + result2B);
ViniGodoy

Veja só:
http://www.guj.com.br/posts/list/84121.java#448928

Criado 6 de fevereiro de 2010
Ultima resposta 7 de fev. de 2010
Respostas 7
Participantes 5