一句话理解
double 是双精度小数,竞赛中存实数的首选。
为什么要学
面积、概率、实数二分,都会用到它。
讲解
有效数字大约 15 位。仍然不是精确的十进制:0.1+0.2 不一定严格等于 0.3。
比较两个 double,不要直接 ==,而看差的绝对值是否小于 eps,比如 1e-8。
输出小数位数用 fixed 和 setprecision,后面有专课。
例子
double a = 0.1, b = 0.2;
cout << (a + b == 0.3); // 可能是 0
二进制浮点无法精确表示很多十进制小数,所以相等判断要谨慎。
常见错误
- 用 double 当整数用,累积误差。能用整数就用整数。
- 直接
==比较两个计算结果。