首頁  >  文章  >  資料庫  >  MySQL資料型別中DECIMAL的用法實例詳解

MySQL資料型別中DECIMAL的用法實例詳解

小云云
小云云原創
2017-12-08 12:00:162637瀏覽

在MySQL資料類型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它們都有各自的作用,下面我們就主要來介紹一下MySQL資料類型中的DECIMAL類型的作用和用法。本文主要介紹了MySQL資料類型中DECIMAL的用法實例詳解的相關資料,希望透過本文能幫助大家,需要的朋友可以參考下。

一般賦予浮點列的值被四捨五入到這個列所指定的十進制數。如果在一個FLOAT(8, 1)的欄位中儲存1. 2 3 4 5 6,則結果為1. 2。如果將相同的值存入FLOAT(8, 4) 的欄位中,則結果為1. 2 3 4 6。

這表示應該定義具有足夠位數的浮點列以便得到盡可能精確的值。如果想精確到千分之一,那就不要定義使該類型只有兩位小數。

浮點值的這種處理在MySQL3.23 中有例外,FLOAT(4) 和FLOAT(8) 的效能有所改變。這兩種類型現在為單精度( 4 位元組)和雙精度( 8 位元組)的類型,在其值以給出的形式存放(只受硬體的限制)這一點上說,這兩種類型是真浮點類型。

DECIMAL 類型不同於FLOAT和DECIMAL,其中DECIMAL 實際上是以串存放的。 DECIMAL 可能的最大取值範圍與DOUBLE 一樣,但是其有效的取值範圍由M 和D 的值決定。如果改變M 而固定D,則其取值範圍將隨M 的變大而變大。表2 - 7的前三行說明了這一點。如果固定M 而改變D,則其取值範圍將隨D 的變大而變小(但精度增加)。表2 - 7的後三行說明了這一點。

給定的DECIMAL 類型的取值範圍取決於MySQL資料類型的版本。對於MySQL3.23 先前的版本,DECIMAL(M, D) 列的每個值佔用M 位元組,而符號(如果需要)和小數點包括在M 位元組中。因此,類型為DECIMAL(5, 2) 的列,其取值範圍為-9.99 到9 9 . 9 9,因為它們涵蓋了所有可能的5 個字元的值。

正如MySQL3.23 一樣,DECIMAL 值是根據ANSI 規範進行處理的, ANSI 規範規定DECIMAL(M, D) 必須能夠表示M 位數字及D 位小數的任何值。

例如, DECIMAL(5, 2) 必須能夠表示從-999.99 到999.99 的所有值。而且必須儲存符號和小數點,因此自MySQL3.23以來DECIMAL 值佔M + 2 個位元組。對於DECIMAL(5, 2),「最長」的值(- 9 9 9 . 9 9)需要7個位元組。

在正取值範圍的一端,不需要正號,因此MySQL資料型別利用它擴充了取值範圍,使其超過了ANSI 所規範所要求的取值範圍。如DECIMAL(5, 2) 的最大值為9 9 9 9 . 9 9,因為有7 個位元組可用。

簡而言之,在MySQL3.23 及以後的版本中,DECIMAL(M, D) 的取值範圍等於更早版本中的DECIMAL(M + 2, D) 的取值範圍。在MySQL資料類型的所有版本中,如果某個DECIMAL 欄位的D 為0,則不儲存小數點。這樣做的結果是擴充了列的取值範圍,因為過去用來儲存小數點的位元組現在可用來存放其他數字了。

相關推薦:

有關decimal類型的文章推薦10篇

MySQL資料類型-decimal詳解

#注意mysql 中一訂要用decimal標識貨幣的值

#

以上是MySQL資料型別中DECIMAL的用法實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn