IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁(yè)操作系統(tǒng)LINUX → ORACLE的數(shù)據(jù)類型float(b)

ORACLE的數(shù)據(jù)類型float(b)

時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)

  把字段類型設(shè)計(jì)成float(2)后,插入數(shù)據(jù)93.5,后,為什么變成了90?

  為了說(shuō)明這個(gè)問(wèn)題,我們先來(lái)看一段話:oracle Online Help 說(shuō):FLOAT(b) specifies a floating-point number with binary precision b. The precision b can range from 1 to 126. To convert from binary to decimal precision, multiply b by 0.30103。

  根據(jù)這段話,我們可以看到,float(2)中的2是一個(gè)binary precision,而不是我們常用的decimal precision。他們之間的換算關(guān)系是:binary precision=int(b*0.30103),因此我們這里實(shí)際上的精度應(yīng)該等于int(2*0.30103)=0,即小數(shù)點(diǎn)后精度為0。

  回到我們?cè)瓉?lái)的問(wèn)題,93.5化成浮點(diǎn)型9.35*10^1,這時(shí)9.35小數(shù)點(diǎn)后精度為0,成9,因此最后變成9*10^1=90。

  類似的,我們可以設(shè)計(jì)成float(10),那么int(10*0.30103)=3,因此,如果插入93.5,就得出9.35--精度為3-->9.350,9.350*10^1=93.5。如果插入13884.2,得出1.38842--精度為3-->1.388,1.388*10^4=13880。

  我們可以從以下測(cè)試更加清楚的看到這樣的換算規(guī)則。

  Connected to Oracle9i Enterprise Edition Release 9.0.1.1.1

  Connected as aspire

  SQL>

  SQL> CREATE TABLE hjm_float_test

  2 (a FLOAT(2),

  3 b FLOAT(10),

  4 c FLOAT,

  5 d NUMBER);

  Table created

  SQL> INSERT INTO hjm_float_test(a,b,c,d) VALUES(93.5,93.5,93.5,93.5);

  1 row inserted

  SQL> INSERT INTO hjm_float_test(a,b,c,d) VALUES(93.665,93.665,93.665,93.665);

  1 row inserted

  SQL> INSERT INTO hjm_float_test(a,b,c,d) VALUES(96.5,96.5,96.5,96.5);

  1 row inserted

  SQL> INSERT INTO hjm_float_test(a,b,c,d) VALUES(13884.2,13884.2,13884.2,13884.2);

  1 row inserted

  SQL> COMMIT;

  Commit complete

  SQL> SELECT * FROM hjm_float_test;

  A B C D

  ---- ------------ -------------------------------------------------------------------------------- ----------

  90 93.5 93.5 93.5

  90 93.67 93.665 93.665

  100 96.5 96.5 96.5

  1000 13880 13884.2 13884.2

  SQL> desc hjm_float_test;

  Name Type Nullable Default Comments

  ---- ------ -------- ------- --------

  A FLOAT Y

  B FLOAT Y

  C FLOAT Y

  D NUMBER Y

  SQL>

  請(qǐng)?zhí)貏e注意的是,雖然我在設(shè)計(jì)表的時(shí)候設(shè)計(jì)成了float(2)、float(10),但是當(dāng)我在desc表(代碼最后7列)的時(shí)候卻是看不到這樣的設(shè)計(jì)結(jié)構(gòu)的,這樣的問(wèn)題需要尤其引起注意!!

  最后,讓我們回顧一下,記住float(b)中的b是二進(jìn)制的精度,他的換算規(guī)則是binary precision=int(b*0.30103)。

關(guān)鍵詞標(biāo)簽:ORACLE,數(shù)據(jù)類型

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程使用screen管理你的遠(yuǎn)程會(huì)話使用screen管理你的遠(yuǎn)程會(huì)話GNU/Linux安裝vmwareGNU/Linux安裝vmware如何登錄linux vps圖形界面 Linux遠(yuǎn)程桌面連如何登錄linux vps圖形界面 Linux遠(yuǎn)程桌面連

相關(guān)下載

人氣排行 Linux下獲取CPUID、硬盤序列號(hào)與MAC地址linux tc實(shí)現(xiàn)ip流量限制dmidecode命令查看內(nèi)存型號(hào)linux下解壓rar文件安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令lcx.exe、nc.exe、sc.exe入侵中的使用方法查看linux服務(wù)器硬盤IO讀寫負(fù)載