Em Java, Java.
Existem dois tipos de dados de ponto flutuante:
- tipo de dados flutuante
- tipo de dados duplo
Ambos, float e double representam os números de ponto flutuante que armazenam os valores decimais.
Tipo de dados de ponto flutuante | Valores | Tamanho (bits)* | Requisito de armazenamento (bytes) | Valor padrão | Precisão | Dígitos decimais | Faixa | Precisão |
---|---|---|---|---|---|---|---|---|
flutuador | Ponto flutuante IEEE 754 | 32 | 4 | 0,0f | Solteiro | 6 dígitos decimais | 3.4e-038 a 3.4e+038 | Baixo |
dobro | Ponto flutuante IEEE 754 | 64 | 8 | 0,0d | Dobro | 15 dígitos decimais | 1,7e-308 a 1,7e+308 | Alto |
*Os bits de tamanho incluem o seguinte:
Pedaços | flutuador | dobro |
---|---|---|
Sinal | 1 | 1 |
Expoente | 8 | onze |
Mantissa | 23 | 52 |
Precisão única: Isso consiste de um bit de sinal (S), oito bits de expoente (E) e vinte e três bits de mantissa (M).
Dupla precisão: Isso consiste de um bit de sinal (S), onze bits de expoente (E) e cinquenta e dois bits de mantissa (M).
tipo de dados flutuante
É um número de ponto flutuante IEEE 754 (padrão para aritmética de ponto flutuante) de precisão simples de 32 bits. Isso significa que fornece precisão de 6 a 7 dígitos decimais. É usado se quisermos usar a memória de forma eficaz porque ocupa menos memória em comparação com o tipo de dados duplo. Para definir um valor flutuante, devemos usar um sufixo f ou F. Seu valor padrão é 0,0f. Por padrão, os números flutuantes são tratados como duplos em Java.
alfabeto numerado
Por exemplo, se definirmos um número flutuante como:
float height = 167.7
A declaração acima da variável float fornece o erro de compilação. Podemos corrigir o erro adicionando um sufixo f ou F.
float height = 167.7f or float height = 167.7F
tipo de dados duplo
O tipo de dados duplo é um número de ponto flutuante IEEE 754 de precisão dupla de 64 bits. Isso significa que fornece precisão de 15 a 16 dígitos decimais. Consome mais memória em comparação com o tipo de dados float. É usado para armazenar valores decimais. Seu valor padrão é 0,0d. É opcional adicionar o sufixo d ou D. Por exemplo:
double price = 987.90D or double price = 987.90d or double price = 987.90
tipo de dados float vs double
O tipo de dados double é mais preciso que o tipo de dados float. A tabela a seguir resume as diferenças entre os tipos de dados float e double.
Base | tipo de dados flutuante | tipo de dados duplo |
---|---|---|
Memória | Isso ocupa 4 bytes. | Isso ocupa 8 bytes. |
Precisão | Sua precisão é baixo . | Sua precisão é alto . |
Precisão | Segue-se precisão simples (6-7 dígitos decimais). | Segue-se dupla precisão (15-16 dígitos decimais). |
Palavra-chave usada | O flutuador palavra-chave é usada para definir um número flutuante. | O dobro palavra-chave é usada para definir um número de precisão dupla. |
Classe de wrapper | Sua classe wrapper é java.lang.Float. | Sua classe wrapper é java.lang.Double. |
Tipo de dados padrão | Java não o usa como número de ponto flutuante padrão. | É o padrão tipo de dados para números de ponto flutuante. |
Perda de dados | Haverá sem perda de dados se convertermos float em double. | Haverá perda de dados se convertermos double em float. |
Usos | Deve ser usado onde menos precisão é necessária e o armazenamento é uma restrição. | É usado onde mais precisão é necessário e também requer mais precisão. |
Sufixo | Ele usa F ou f como sufixo. É obrigatório adicionar um sufixo se você estiver declarando uma variável flutuante. | Ele usa d ou D como sufixo. É opcional adicionar um sufixo se você estiver declarando uma variável dupla. |
Representação | 28,96f ou 28,96°F | 12,5 ou 12,5D ou 12,5d |
Semelhanças entre tipos de dados float e double
- Os números reais podem ser representados por ambos os tipos de dados.
- Os tipos de dados float e double não são precisos, portanto, são valores aproximados.
Qual tipo de dados de ponto flutuante em Java devemos usar?
double é mais preciso que float. Portanto, se for necessário um resultado mais preciso e exato, use o dobro. Outra razão para usar double é que se o número não se enquadrar no intervalo oferecido pelo float, use double. Devemos usar float se tivermos restrição de memória porque ocupa metade do espaço do que double.
Recomendamos que você use double over float se não houver restrição de memória e espaço e quando for necessária mais precisão. É aconselhável usar o float, se a memória for uma preocupação e o resultado em 16 dígitos decimais de precisão não for necessário.
Os dois seguintes Programas Java mostram claramente as diferenças entre os tipos de dados float e double.
FloatDataTypeExample.java
public class FloatDataTypeExample { public static void main(String args[]) { float x = 1.0f, y = 3.0f; //defining x and y as float float z = x / y; //divides x by y and stores the result in the variable z System.out.println('x/y = ' + z); //prints the result } }
Saída:
x/y = 0.33333334
DoubleDataTypeExample.java
public class DoubleDataTypeExample { public static void main(String args[]) { double x = 1.0, y = 3.0; //defining x and y as double double z = x / y; //divides x by y and stores the result in the variable z System.out.println('x/y = ' + z); //prints the result } }
Saída:
x/y = 0.3333333333333333
Através dos dois exemplos acima, fica claro que o tipo de dados duplo ocupa mais memória para armazenar um número de precisão dupla e também fornece resultados mais precisos com até 16 dígitos decimais. Embora o tipo de dados float ocupe menos espaço para armazenar números de precisão simples e forneça resultados de até 6 casas decimais.