Divisão Inteira em Java
O artigo apresenta uma explicação detalhada do que acontece internamente quando dividimos dois inteiros.
No código Java abaixo, existem quatro instruções java. Cada linha imprime uma saída diferente com base nos números que se dividem entre si.
package integer_division;
public class IntegerDivision {
public static void main(String[] args) {
System.out.println(10 / 9);
System.out.println(-10 / 9);
System.out.println(10 / -9);
System.out.println(10 / 19);
System.out.println((float) 10 / 9);
System.out.println((double) 10 / 9);
}
}
- No caso 1, um inteiro maior é dividido por um inteiro menor. A saída resultante é o inteiro
1
. Matematicamente, quando dividimos dez por nove, isso resulta em um número repetido que é1,11111 ...
. Mas na linguagem Java, quando um inteiro divide outro inteiro, ele joga fora o resto e mantém o quociente. Portanto, a saída resultante é um número inteiro. - No caso 2, quando dividimos o inteiro negativo em um inteiro positivo, isso resulta em um inteiro como
-1
. Como afirmado acima, o inteiro joga fora o resto e mantém o quociente. Portanto, o valor resultante é um número inteiro negativo. - No caso 3, existe o caso inverso em que o numerador é um número inteiro positivo e o denominador é um número inteiro negativo. A saída resultante é
-1
. Novamente, o sinal negativo no numerador ou denominador não importa muito. Ele simplesmente divide os dois números sem manter nenhum resto. E, portanto, a saída é novamente uma negação de inteiro. - No caso 4, o denominador é maior que o numerador, o que resulta em um número menor que
1
. Conforme declarado acima, o número trunca após zero e imprime o valor0
como sua saída. - No caso 5, estamos projetando manualmente a saída para um valor
flutuante
.
Vamos entender primeiro o typecasting.
Typecasting
é o processo de conversão de um tipo de dados em outro, e podemos fazer isso manualmente ou automaticamente.
Widening Typecasting
: É frequentemente denominadoconversão implícita
. Nesse tipo de conversão, um tipo de dados menor é convertido em um tipo de dados superior. O compilador faz essa conversão automaticamente.Estreitamento da projeção de tipos
: É frequentemente denominadoconversão explícita
. Nesse tipo de conversão, um tipo de dados maior é convertido em algum tipo de dados menor, resultando em perda de dados.
Portanto, no caso 3, os dados truncados implicitamente pelo compilador são convertidos manualmente em número float
, o que resulta em um número racional completo. Este número exibe dados de até 8 dígitos.
Da mesma forma, no caso 6, castaremos manualmente a divisão inteira em um valor double
. Portanto, isso resultará em um número decimal que exibe números de até 16 dígitos.
Consulte a seção abaixo para a saída do código acima.
1
-1
-1
0
1.1111112
1.1111111111111112
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn