Avatar ·

C++中float和double有什么区别?

你好!我最近开始学习C++,遇到了一个不太明白的情况。教科书上说有两种浮点数类型:float和double。我知道double占用更多内存(8字节对比4字节),但我不太清楚什么时候该用哪个。 例如,我写了一个简单的程序来计算圆的面积: ```cpp #include #include int main() { float radius = 2.5f; float area = M_PI * radius * radius; std::cout << "面积: " << area << std::endl; return 0; } ``` 一切运行正常。但后来我尝试计算更复杂的东西,比如大量小数的和: ```cpp float sum = 0.0f; for (int i = 0; i < 1000000; ++i) { sum += 0.1f; } std::cout << "总和: " << sum << std::endl; // 输出 99999.992... 而不是 100000.0 ``` 结果不精确!如果我把float换成double,结果会更接近预期。为什么会这样?根本区别是什么?