Oracle中实现圆周率计算(一)

日期: 2008-08-20 作者:杨廷琨 来源:TechTarget中国 英文

  今天两个同事用JAVA实现圆周率一百位小数的实现。一个同事问我要不要试试,由于很长时间没有写过JAVA代码,而且本身JAVA的水平就很差,于是打算用ORACLE实现。


  其实Oracle中使用现成的函数就可以直接到的圆周率,比如:







SQL> select ACOS(-1) FROM DUAL; 
  ACOS(-1) 
  ———- 
  3.14159265 

  可以通过调整数值类型的参数来获取38位精度:






SQL> SET NUMW 40 
  SQL> select ACOS(-1) PI FROM DUAL; 
  PI 
  —————————————-
3.1415926535897932384626433832795028842
 

  如果不能使用现成的函数,而要自己计算,则要麻烦一些。


  当时同事问我的时候,我告诉他一分种左右就可以搞定,而实际证明,写这个代码用了5分钟左右:






  SQL> create OR REPLACE PROCEDURE P_PI wrapped 
  2 a000000 
  3 1 
  4 abcd 
  5 abcd 
  6 abcd 
  7 abcd 
  8 abcd 
  9 abcd 
  10 abcd 
  11 abcd 
  12 abcd 
  13 abcd 
  14 abcd 
  15 abcd 
  16 abcd 
  17 abcd 
  18 abcd 
  19 7 
  20 ec 11f 
  21 bLpzn0N21EJAQZmxUW0FNNv3TiEwgwDQ7UhqfC/WmGCua2Lf0zZFLKG/pZHGJ/bKzDYxl/z+ 
  22 qm17DFusHSThkSZkEuy6LmGKASmXQXlIcj5c2rC7LQDfmeLEhifcu+/Euy0ZqsYYpFeKtfeC 
  23 Vamv1TmuhyHFqL1bdFkURszthPM58C+Jwz4juIdQ3pEBIhhdUWdwH2nhe8wAWXYtDklgqX3m 
  24 d05w6NIDkQvcTtJx/uoF8gVIBzPG8V7EYd5VJ/6IIw24DU+CH20QJHWJwe4eKG3j3/I= 
  25 
  26 / 


  过程已创建。


  这时10.2版本下WRAP后的过程,利用这个代码可以返回圆周率100位以内的任意位小数:







SQL> SET SERVEROUT ON 
  SQL> &#101xec P_PI 
  3.1415926535 



  PL/SQL 过程已成功完成。







SQL> &#101xec P_PI(1) 
  3.1 

   PL/SQL 过程已成功完成。







SQL> &#101xec P_PI(5) 
  3.14159 

  PL/SQL 过程已成功完成。







SQL> &#101xec P_PI(38) 
  3.14159265358979323846264338327950288419 


  PL/SQL 过程已成功完成。 






SQL> &#101xec P_PI(100) 
  3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706 


  PL/SQL 过程已成功完成。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐