WEB开发网
开发学院数据库Oracle Oracle中实现圆周率计算 阅读

Oracle中实现圆周率计算

 2008-09-02 12:46:00 来源:WEB开发网   
核心提示: PL/SQL 过程已成功完成,小的时候背过圆周率,Oracle中实现圆周率计算(3),恰好能背到100位,因此都不用google就可以完成上面的代码,当N位100时,已经精确到小数点后面30位,记得大学的时候几个同学去参加一个C语言的编程竞赛,题目就是实现圆周率的计算

PL/SQL 过程已成功完成。

小的时候背过圆周率,恰好能背到100位,因此都不用google就可以完成上面的代码。记得大学的时候几个同学去参加一个C语言的编程竞赛,题目就是实现圆周率的计算,由于竞赛不看源码,只关注执行时间,于是几个同学开始分工,一个默写圆周率,另外几个写一个简单的延迟程序,延迟之后直接输出结果就可以了。

扯远了,其实计算圆周率的多项式展开有很多种,随便GOOGLE一下都可以找到一堆,而且还有各种算法的详细说明。

个人认为ORACLE实在不适合来讨论算法,所以只挑了一个比较简单的算法进行计算,多项式为:PI=2+1/3*(2+2/5*(2+3/7*(2+…(2+N/(2N+1))…)))

利用PL/SQL实现代码如下:

SQL>createORREPLACEPROCEDUREP_PI(P_NNUMBERDEFAULT10)AS 
  2V_RESULTNUMBERDEFAULT1; 
  3V_countNUMBERDEFAULTP_N; 
  4BEGIN 
  5LOOP 
  6EXITWHENV_count=0; 
  7V_RESULT:=2+V_count/(2*V_count+1)*V_RESULT; 
  8V_count:=V_count-1; 
  9ENDLOOP; 
  10DBMS_OUTPUT.PUT_LINE(TO_char(V_RESULT)); 
  11END; 
  12/

过程已创建。

SQL>execP_PI 
  3.14084209564085725076437150740556313312

PL/SQL 过程已成功完成。 

SQL>execP_PI(100) 
  3.14159265358979323846264338327929528649

PL/SQL 过程已成功完成。

使用这种方法,N为多项式级数,当N为10的时候,精确到小数点后面2位,当N位100时,已经精确到小数点后面30位。

当N的值位126的时候,确保NUMBER精度范围内的值都是准确的: 

上一页  1 2 3 4  下一页

Tags:Oracle 实现 圆周率

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接