目录

浮点数计算精度问题


目录
int n;
sqrt(n+1e-6);

1e-6 表示 1 乘以 10 的负 6 次方。

1e-6(也就是 0.000001)叫做 epslon,用来抵消浮点运算中因为误差造成的相等无法判断的情况。它通常是一个非常小的数字(具体多小要看你的运算误差)

比如说因为精度误差,用十进制举例,我们要算 (1/3)+(1/3)+(1/3)==1(从数学上说,肯定相等),但是因为精度问题,等号左边算出来是 0.3333333+0.3333333+0.3333333=0.9999999,

存在了误差,右边是 1.0000000,那么如果直接用==,返回 false,我们希望它被视作相等。那么就要两数相减取绝对值小于 epslon 的办法。