oracle pi 3.14,Oracle中实现圆周率计算(一)
今天兩個(gè)同事用JAVA實(shí)現(xiàn)圓周率一百位小數(shù)的實(shí)現(xiàn)。一個(gè)同事問我要不要試試,由于很長(zhǎng)時(shí)間沒有寫過JAVA代碼,而且本身JAVA的水平就很差,于是打算用ORACLE實(shí)現(xiàn)。
其實(shí)Oracle中使用現(xiàn)成的函數(shù)就可以直接到的圓周率,比如:
SQL> SELECT ACOS(-1) FROM DUAL;
ACOS(-1)
----------
3.14159265
可以通過調(diào)整數(shù)值類型的參數(shù)來獲取38位精度:
SQL> SET NUMW 40
SQL> SELECT ACOS(-1) PI FROM DUAL;
PI
----------------------------------------
3.1415926535897932384626433832795028842
如果不能使用現(xiàn)成的函數(shù),而要自己計(jì)算,則要麻煩一些。
當(dāng)時(shí)同事問我的時(shí)候,我告訴他一分種左右就可以搞定,而實(shí)際證明,寫這個(gè)代碼用了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? /
過程已創(chuàng)建。
這時(shí)10.2版本下WRAP后的過程,利用這個(gè)代碼可以返回圓周率100位以內(nèi)的任意位小數(shù):
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過程已成功完成。
總結(jié)
以上是生活随笔為你收集整理的oracle pi 3.14,Oracle中实现圆周率计算(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。