[一个Sqrt函数引发的血案.docxVIP

  • 2
  • 0
  • 约5.36千字
  • 约 6页
  • 2017-01-09 发布于北京
  • 举报
[一个Sqrt函数引发的血案

/jyshis/archive/2011/09/08/2171869.html一个Sqrt函数引发的血案 源码下载地址:/post/story-about-sqrt.aspx好吧,我承认我标题党了,不过既然你来了,就认真看下去吧,保证你有收获。我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢?虽然有可能你平时没有想过这个问题,不过正所谓是“临阵磨枪,不快也光”,你“眉头一皱,计上心来”,这个不是太简单了嘛,用二分的方法,在一个区间中,每次拿中间数的平方来试验,如果大了,就再试左区间的中间数;如果小了,就再拿右区间的中间数来试。比如求sqrt(16)的结果,你先试(0+16)/2=8,8*8=64,64比16大,然后就向左移,试(0+8)/2=4,4*4=16刚好,你得到了正确的结果sqrt(16)=4。然后你三下五除二就把程序写出来了:float SqrtByBisection(float n) //用二分法 { if(n0) //小于0的按照你需要的处理 return n; float mid,last; float low,up; low=0,up=n; mid=(low+up)/2; do{if(mid*midn)up=mid; el

文档评论(0)

1亿VIP精品文档

相关文档