oracle pi 3.14,Oracle中实现圆周率计算(一)
今天兩個同事用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> EXEC P_PI
3.1415926535
PL/SQL過程已成功完成。
SQL> EXEC P_PI(1)
3.1
PL/SQL過程已成功完成。
SQL> EXEC P_PI(5)
3.14159
PL/SQL過程已成功完成。
SQL> EXEC P_PI(38)
3.14159265358979323846264338327950288419
PL/SQL過程已成功完成。
SQL> EXEC P_PI(100)
3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706
PL/SQL過程已成功完成。
總結
以上是生活随笔為你收集整理的oracle pi 3.14,Oracle中实现圆周率计算(一)的全部內容,希望文章能夠幫你解決所遇到的問題。