浮点数二分板子
浮點數二分存在精度問題,當區間端點r和l之間相差一個很小的數的時候,認為兩者相等,此時退出二分循環,l或者r就是答案。
這里的精度有經驗值
如果保留4位小數,一般取1e-6
如果保留5位小數,一般取1e-7
如果保留6位小數,一般取1e-8
以求開平方跟為例
#include<iostream> using namespace std;double x;int main(){cin>>x;double l=0,r=x;while(r-l>1e-6){double mid=(l+r)/2;if(mid*mid>=x) r=mid;else l=mid;}printf("%lf",l); }第二種寫法,不管精度,直接迭代100次,這里100的意思是把一個區間二分100次,也就是
len2100\frac{len}{2^{100}}2100len?
這樣這個區間很小很小,所以精度會很高。
數的三次方根
模板題 求三次方根
注意可能存在負數,保留6位小數
總結
- 上一篇: 阳台为什么不装暖气?
- 下一篇: 为什么石膏板吊顶开裂?