实数域二分的判停条件是:l-r<=eps
eps是预定精度。
这里的话,很多同学(包括本蒟蒻)就会自然而然地认为这个就是判浮点数是否相等的。
实则不是。
由于浮点数的精度误差,这样的判断方法不是很科学,显得非常简单。
那么复杂科学的判断方式是什么呢?
是这样:
\[\frac{|a-b|}{\max(|a|,|b|)}\le eps\]
除变乘
就成了这样:
//Attention
abs(a-b)<=eps*max(abs(a),abs(b));
差不多是这样。
实数域二分的判停条件是:l-r<=eps
eps是预定精度。
这里的话,很多同学(包括本蒟蒻)就会自然而然地认为这个就是判浮点数是否相等的。
实则不是。
由于浮点数的精度误差,这样的判断方法不是很科学,显得非常简单。
那么复杂科学的判断方式是什么呢?
是这样:
\[\frac{|a-b|}{\max(|a|,|b|)}\le eps\]
除变乘
就成了这样:
//Attention
abs(a-b)<=eps*max(abs(a),abs(b));
差不多是这样。
上一篇:JDOJ 1104: 最佳挑水
下一篇:边缘检测
浮点数相等一直是个老生常谈的话题。今天我们借助python math模块中的isclose函数说明一下这个问题。
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M