Less than 1 minute
大多数语言中存储的浮点数都是后几位精度不准的,所以基本都不能直接判断相等关系: a==b
// cpp
double a = 1.0/3;
double b = 1.0/3 + 1 - 1;
printf("%lf %lf %d\n", a, b, a==b);
// 0.333333 0.333333 0
# python
a = 1/3
b = 1/3 + 1 - 1
print(a==b)
# 0.3333333333333333 0.33333333333333326 False
我们设定精度误差,这样就可以判断相等关系: abs(a-b)<0.001
// cpp
double a = 1.0/3;
double b = 1.0/3 + 1 - 1;
printf("%lf %lf %d\n", a, b, fabs(a-b)<0.001);
// 0.333333 0.333333 1
# python
a = 1/3
b = 1/3 + 1 - 1
print(a, b, abs(a-b)<0.001)
# 0.3333333333333333 0.33333333333333326 True