Tipo de dados flutuante e duplo em Java
Os tipos de dados float e double são usados para armazenar números reais ou de ponto flutuante em Java, mas um tipo de dados double é mais preciso do que float. double
é o tipo de dados padrão para números de ponto flutuante.
Para armazenar números de ponto flutuante com precisão
Um float
é um ponto flutuante IEEE 754 de 32 bits, enquanto um duplo é um ponto flutuante IEEE 754 de 64 bits. Float
tem um alcance inferior em comparação com o dobro.
No exemplo dado abaixo, temos d
do tipo de dados double
, que é obtido dividindo duas variáveis double
d1
e d2
. Da mesma forma, temos f1
resultado quando duas variáveis flutuantes
f1
e f2
são divididas. No caso de double
, não há necessidade de usar o sufixo d
ou D
, enquanto para dados do tipo float
precisamos usar o sufixo f
ou F
como por padrão, todos reais os números são considerados double
em Java.
Na saída, podemos ver que a precisão e exatidão da variável double
d
é mais do que a variável float
f
. Sabemos que double
é um tipo de dados maior do que float
, por isso precisamos fazer down-cast. Para typecast double
para float
, precisamos mencionar a palavra-chave float
entre colchetes antes do valor decimal.
É visível na saída que, ao converter a variável double
em float
, ela perde dados e precisão, pois estamos armazenando um tipo de dados maior em um tipo de dados menor. Portanto, double
consome mais memória para armazenar números flutuantes de precisão dupla e fornece resultados precisos.
public class Test {
public static void main(String args[]) {
double d1 = 10.0;
double d2 = 3.0;
double d = d1 / d2;
System.out.println("double d : " + d);
float f1 = 10.0f;
float f2 = 3.0f;
float f = f1 / f2;
System.out.println("float f : " + f);
float f3 = (float) d;
System.out.println("float f3 : " + f3);
double d3 = f;
System.out.println("double d3 : " + d3);
}
}
Produção:
double d : 3.3333333333333335
float f : 3.3333333
float f3 : 3.3333333
double d3 : 3.3333332538604736
A diferença entre os dois tipos de dados pode ser ilustrada com os dados tabulares fornecidos.
Tipo de dados | Precisão | Tamanho | Default Tipo de dados | Valor padrão | Sufixo | Classe Wrapper | Perda de dados | Palavra-chave |
---|---|---|---|---|---|---|---|---|
Flutuador | Precisão única (6-7 dígitos decimais) | 32 bits | Não | 0.0f | Use f ou F. Precisamos adicionar este sufixo porque, por padrão, os números flutuantes são explicitamente tratados como duplos | java.lang.Float | Sem perda de dados ao converter float em double | A palavra-chave float é usada para o tipo float |
Dobro | Precisão dupla (15-16 dígitos decimais) | 64 bits | Sim | 0.0d | Use d ou D. Opcional para usar sufixo | java.lang.Double | Perda de dados ao converter double para float | A palavra-chave double é usada para definir um número de precisão dupla |
Float e double são usados para representar números reais. Ambos os tipos de dados não são precisos; eles são tipos aproximados. Quando precisamos de um resultado exato e preciso, devemos buscar o dobro. Se houver qualquer restrição de memória e espaço, a flutuação deve ser considerada.
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedInArtigo relacionado - Java Double
- Converter Int para Double em Java
- Converter Double to String em Java
- Converter duplo em flutuante em Java
- Truncar duplo em Java
- Converter Double to Int em Java