小技巧—判断浮点数相等
小技巧—判断浮点数相等
实数域二分的判停条件是:l-r<=eps
eps是预定精度。
这里的话,很多同学(包括本蒟蒻)就会自然而然地认为这个就是判浮点数是否相等的。
实则不是。
由于浮点数的精度误差,这样的判断方法不是很科学,显得非常简单。
那么复杂科学的判断方式是什么呢?
是这样:
\[\frac{|a-b|}{\max(|a|,|b|)}\le eps
\]
除变乘
就成了这样:
#include<cmath>
#include<algorithm>
//Attention
abs(a-b)<=eps*max(abs(a),abs(b));
差不多是这样。