1. doubletipo
Java fornece o doubletipo para trabalhar com números reais (fracionários). Ele ocupa 8 bytesem memória (o dobro do inttipo) 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*10308int-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 doubletipo, também temos o floattipo (que tem apenas 4 bytes de tamanho). Seu nome vem do ponto flutuante . E o nome doublevem de double float . A doubleé duas vezes maior que a float: 8 bytesversus 4. Também é chamado de número de ponto flutuante de precisão dupla .
2. Criando um doubletipo
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;
doubletipo
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 inttipo, você pode usar atalhos para criar várias doublevariáveis simultaneamente:
double name 1, name 2, name 3;
doublevariáveis
E até mesmo atribuir imediatamente valores a eles:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
doublevariá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 intvariáveis e números reais - apenas a doublevariá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 doublevariá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 xlojas 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 xlojas variáveis5000.0 |
|
O número 10será exibido na tela |
|
O número 10.0será exibido na tela |
E, finalmente, também é possível atribuir números reais a intvariá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);
intvariável
Exemplos:
| Declaração | Observação |
|---|---|
|
As xlojas variáveis5 |
|
As xlojas variáveis5 |
|
As xlojas 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 5por 2para 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 / 2e só então atribui o resultado à dvariável. E a 5 / 2operação é divisão inteira. Esse meio d conterá 2ou, 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