Qual é a diferença entre float e double em C++?
Olá! Recentemente comecei a estudar C++ e me deparei com uma situação confusa. No livro diz que existem dois tipos para números de ponto flutuante: float e double. Eu entendo que double ocupa mais memória (8 bytes contra 4), mas não está totalmente claro para mim quando usar cada um.
Por exemplo, escrevi um programa simples para calcular a área de um círculo:
```cpp
#include
#include
int main() {
float radius = 2.5f;
float area = M_PI * radius * radius;
std::cout << "Área: " << area << std::endl;
return 0;
}
```
Tudo funciona perfeitamente. Mas depois tentei calcular algo mais complexo, como a soma de um grande número de números fracionários:
```cpp
float sum = 0.0f;
for (int i = 0; i < 1000000; ++i) {
sum += 0.1f;
}
std::cout << "Soma: " << sum << std::endl; // Imprime 99999.992... e não 100000.0
```
O resultado não foi preciso! Se eu substituir float por double, a resposta fica mais próxima do esperado. Por que isso acontece? Qual é a diferença fundamental?