1. double
tipo
Java fornece o double
tipo para trabalhar com números reais (fracionários). Ele ocupa 8 bytes
em memória (o dobro do int
tipo) e pode armazenar valores no intervalo de a . Para comparação: o tipo pode armazenar um valor no intervalo de a .-1.7*10308
+1.7*10308
int
-2*109
+2*109
Nos números reais, a parte fracionária é escrita após a vírgula. Por exemplo, 123,456 ou 2,5 ou 100,00 ou 0,01. Quando os computadores lidam com esses números, nós os chamamos de números de ponto flutuante .
A propósito, além do double
tipo, também temos o float
tipo (que tem apenas 4 bytes de tamanho). Seu nome vem do ponto flutuante . E o nome double
vem de double float . A double
é duas vezes maior que a float
: 8 bytes
versus 4
. Também é chamado de número de ponto flutuante de precisão dupla .
2. Criando um double
tipo
O tipo double é usado para armazenar números reais. Para criar uma variável no código que pode armazenar números reais, você precisa usar uma instrução como esta:
double name;
double
tipo
Onde nome é o nome da variável. Exemplos:
Declaração | Descrição |
---|---|
|
Uma variável real price é criada |
|
Uma variável real weight é criada |
|
Uma variável real lightSpeed é criada |
Assim como no int
tipo, você pode usar atalhos para criar várias double
variáveis simultaneamente:
double name 1, name 2, name 3;
double
variáveis
E até mesmo atribuir imediatamente valores a eles:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
double
variáveis
Exemplos:
Declaração | Observação |
---|---|
|
As lojas variáveis5.0 |
|
As lojas variáveis2.0 |
|
3. Atribuindo inteiros e números reais
Seria ruim se números inteiros pudessem ser atribuídos apenas a int
variáveis e números reais - apenas a double
variáveis. Queremos ser capazes de converter entre os dois tipos de números. E Java fornece essa capacidade.
Primeiro, números reais e inteiros podem ser atribuídos a double
variáveis. Ao atribuir números inteiros, eles são simplesmente convertidos em números reais. Claro, alguma precisão pode ser perdida no processo.
Declaração | Observação |
---|---|
|
As lojas variáveis5.0 |
|
As lojas variáveis2.0 |
|
As x lojas variáveis1000000.0 |
Em segundo lugar, se um inteiro e um número real estiverem envolvidos em alguma expressão, então o inteiro é primeiro convertido em um número real e só então a operação com o outro número real é executada.
Declaração | Observação |
---|---|
|
As x lojas variáveis5000.0 |
|
O número 10 será exibido na tela |
|
O número 10.0 será exibido na tela |
E, finalmente, também é possível atribuir números reais a int
variáveis. Quando fazemos isso, a parte fracionária do número real é descartada — o número é arredondado para o número inteiro mais próximo.
Além disso, o compilador exige que o programador documente explicitamente o que está acontecendo (para ter certeza de que outros programadores entendam que a parte fracionária está sendo descartada). Em geral, essa conversão se parece com isso no código:
integer_variable = (int)(real_number);
int
variável
Exemplos:
Declaração | Observação |
---|---|
|
As x lojas variáveis5 |
|
As x lojas variáveis5 |
|
As x lojas variáveis11 |
4. Dividindo inteiros e números reais em Java
Ao dividir um inteiro por um inteiro, o resto é sempre descartado. Como então podemos dividir 5
por 2
para obter 2.5
?
A princípio, parece que a opção correta é:
double d = 5 / 2;
Mas não é tão simples. O problema aqui é que a máquina Java primeiro calcula o valor de 5 / 2
e só então atribui o resultado à d
variável. E a 5 / 2
operação é divisão inteira. Esse meio d
conterá 2
ou, para ser mais preciso,2.0
A solução correta é escrever pelo menos um dos números envolvidos na divisão como um número real (ou seja, com ponto decimal):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
Em cada uma das expressões, d
conterá2.5
Mas e se estivermos trabalhando com variáveis? E se tivermos um código como este?:
int a = 5;
int b = 2;
double d = a / b;
Há uma solução engenhosa (e óbvia) aqui — forçar a máquina Java a converter variáveis em números reais multiplicando-as por um como um número real ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Observe que a multiplicação e a divisão têm precedência igual e são executadas da esquerda para a direita. Isso significa que importa onde multiplicamos o 1,0.
Exemplos:
Declaração | ordem de execução | Resultado |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION