Gráfico de comparação:
Base para Comparação | Flutuador | em dobro |
---|---|---|
Precisão | Precisão única. | Dupla precisão. |
Bits | 32 bits. | 64 bits. |
Bytes | 4 bytes . | 8 bytes. |
Alcance Aproximado | 1, 4e-045 a 3, 4e + 038 | 4, 9e-324 a 1, 8e + 308 |
Representação de bits | 1 bit representa o bit de sinal. 8 bits representam expoente. 23 bits representam mantissa. | 1 bit representa o bit de sinal. 11 bits representam expoente. 52 bits representam mantissa. |
Precisão | Menos preciso. | Mais preciso. |
Definição de Float
Um tipo de dados float é um dos tipos de ponto flutuante. O tipo de dados float tem armazenamento de 32 bits (que é igual a 4 bytes) para a variável do tipo float. O tipo de dados float especifica precisão única. A representação de 32 bits em float pode ser explicada como 1 bit é representado como o bit de sinal, 8 bits são representados como um expoente e 23 bits são representados como mantissa. O alcance máximo de um tipo flutuante é de 1, 4e-045 a 3, 4e + 038. Quando comparado com o tipo float de ponto flutuante duplo, o tipo é menos preciso, enquanto o cálculo matemático. Vamos entender float usando um exemplo.
#include #include int main () {float num1 = sqrt (64.23) cout << num1; } // saída 8.00060
Como no código acima, você pode observar que uma variável flutuante num1 é atribuída a um valor que é o pela função sqrt (), que retorna a raiz quadrada do valor que é passado para esta função. Você pode observar que quando o valor em num1 é impresso, ele está próximo do valor exato, mas não é exato. Vamos ver agora o exemplo abaixo quando o mesmo programa é executado usando o dobro como o tipo de dados.
Definição de Double
Double é o segundo tipo de tipo de dados de ponto flutuante. Um tipo de dados double tem armazenamento de 64 bits (que é igual a 8 bytes) para uma variável de tipo duplo. Ele especifica precisão dupla, pois seu tamanho é apenas o dobro do float. A representação de 64 bits do tipo double pode ser explicada como 1 bit representa o bit de sinal, 11 bits representa um expoente e os restantes 52 bits representam a mantissa. Entre float e double o tipo de dados mais comumente usado é o dobro. O tipo double é usado durante o cálculo matemático, e quando há uma necessidade de precisão perfeita. As funções matemáticas sin (), cos () e sqrt () sempre retornam um valor duplo. Vamos entender a precisão do tipo de dado duplo com um exemplo.
#include #include int main () {duplo num1 = sqrt (64.23) cout << num1; } // saída 8.0143621
Você pode observar que a saída obtida no exemplo, explicando float, é diferente da saída obtida no exemplo, explicando o dobro. Assim, a partir disso, podemos dizer que os resultados obtidos a partir do dobro são mais precisos em relação ao float.
Principais diferenças entre float e double
- O tipo de dados flutuante especifica precisão única, o que significa que, quando comparado ao dobro, tem menos precisão, enquanto o dobro especifica precisão dupla, pois é apenas o dobro do ponto flutuante, o erro é insignificante em comparação com o ponto flutuante.
- Uma variável do tipo float possui armazenamento de 32 bits enquanto, uma variável do tipo double possui armazenamento de 64 bits que compila o dobro no armazenamento em relação ao float.
- O valor em float pode variar de 1.4e-045 a 3.4e + 038, enquanto o valor do tipo double pode variar de 4.9e-324 a 1.8e + 308.
- A representação de bits de um valor float lembra que 1 bit de float é usado para o bit sing, os 8 bits para expoente e 23 bits para armazenar mantissa. Por outro lado, um valor duplo lembra que 1 bit dele é usado para cantar o bit, os 11 bits para o expoente e 52 bits para armazenar a mantissa.
- Quando comparado com double float é menos preciso, portanto, enquanto o cálculo matemático duplo é usado.
Conclusão:
Bem, você geralmente deve usar o dobro, pois fornece a precisão que é a nossa moto principal na maioria das vezes.