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,结果会更接近预期。为什么会这样?根本区别是什么?