Avatar ·

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?