mysql資料類型DECIMAL(M,D)用法介紹

來源:互聯網
上載者:User


首先,對於精度比較高的東西,比如money,我會用decimal類型,不會考慮float,double,因為他們容易產生誤差,

DECIMAL列的聲明文法是DECIMAL(M,D)。在MySQL 5.1中,參量的取值範圍如下:

·         M是數位最大數(精度)。其範圍為1~65(在較舊的MySQL版本中,允許的範圍是1~254)。

·         D是小數點右側數位數目(標度)。其範圍是0~30,但不得超過M。

說明:float佔4個位元組,double佔8個位元組,decimail(M,D)占M+2個位元組。

如DECIMAL(5, 2) 的最大值為9 9 9 9 . 9 9,因為有7 個位元組可用。

譯者註:

M 與D 對DECIMAL(M, D) 取值範圍的影響

類型說明 取值範圍(MySQL < 3.23) 取值範圍(MySQL >= 3.23)

 

 代碼如下 複製代碼
DECIMAL(4, 1) -9.9 到 99.9 -999.9 到 9999.9
   DECIMAL(5, 1) -99.9 到 999.9 -9999.9 到 99999.9
   DECIMAL(6, 1) -999.9 到 9999.9 -99999.9 到 999999.9
   DECIMAL(6, 2) -99.99 到 999.99 -9999.99 到 99999.99
   DECIMAL(6, 3) -9.999 到 99.999 -999.999 到 9999.999

 

# 在MySQL 3.23 及以後的版本中,DECIMAL(M, D) 的取值範圍等於早期版本中的DECIMAL(M + 2, D) 的取值範圍。

還有一種資料類型也是比較棒的: 那就是LongBlob,這種資料類型可以直接把影像檔存到資料庫中!


筆者,最近在研究mysql的decimal資料類型,現把資料實驗結果公布如下

資料庫版本:Server version: 5.0.45 Source distribution

1、建立表結構

 代碼如下 複製代碼


create table ta (a float,b decimal(10,5));


2、插入資料

 代碼如下 複製代碼


insert into ta (a,b) values(1,12345.123423);


實際插入的b列資料為:12345.12342

 

 代碼如下 複製代碼
insert into ta (a,b) values(1,123456.1234);


實際插入的b列資料為:99999.99999

結論:decimal資料類型,

1、當插入的整數部分的值超過了其表示範圍後就直接忽略了小數部分的值,並以最大值填充。

2、當整數部分合法,小數部分多餘的位元,直接截斷。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.